C++ 中的构造函数定义

问题描述 投票:0回答:1

我是第一次学习C++,正在学习《理解C++编程语言,第四版,C++11》。我无法从早期部分编译一些代码。

我正在使用以下代码创建具有一些基本功能的自定义

Vector
类:

#include <iostream>

class Vector {
public:
    Vector(int s) : elem{new double[s]}, sz{s} {}
    double& operator[](int i) { return elem[i]; }
    int size() { return sz; }
private:
    double* elem;
    int sz;
};

double read_and_sum(int s) {
    Vector v(s);
    for (int i=0; i!=v.size(); ++i)
        std::cin>>v[i]; // read into elements

    double sum = 0;
    for (int i=0; i!=v.size(); ++i) 
        sum+=v[i]; // take the sum of the elements

    return sum; 
}

int main() {
    int sum = read_and_sum(5);
    std::cout << sum;
}

当我打开终端并使用 g++ 编译文件时,我的

Vector
类出现一些错误:

vector2.cpp:5:40: error: expected member name or ';' after declaration specifiers
    Vector(int s) : elem{new double[s]}, sz{s} {}
                                       ^
vector2.cpp:5:25: error: expected '('
    Vector(int s) : elem{new double[s]}, sz{s} {}
                        ^
vector2.cpp:5:39: error: expected ';' after expression
    Vector(int s) : elem{new double[s]}, sz{s} {}

我是否使用了错误的语法来创建

Vector
类?书中的所有内容都与本书几乎相同。

我已经尝试更改语法,但仍然会出现错误,而且我不确定要更改什么,因为我刚刚开始使用该语言。这本书是 C++11 而我的编译器不支持该语法是否有问题?

c++ syntax
1个回答
0
投票

报错信息很清楚。 将行

Vector(int s) : elem{new double[s]}, sz{s} {
更改为
Vector(int s) : elem(new double[s]), sz(s) {
.

或者您可以指定选项

-std=c++11
以采用c++11的新特性。

© www.soinside.com 2019 - 2024. All rights reserved.