我是第一次学习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 而我的编译器不支持该语法是否有问题?
报错信息很清楚。 将行
Vector(int s) : elem{new double[s]}, sz{s} {
更改为 Vector(int s) : elem(new double[s]), sz(s) {
.
或者您可以指定选项
-std=c++11
以采用c++11的新特性。