变量不是类型

Dra*_*gon 1 c++ class

#include<iostream>\n#include<string>\n#include<vector>\nusing namespace std;\nclass Course\n{\n    public:\n        string name;\n        string instructorInCharge;\n        int numberOfStudents;\n        int totalMarks;\n        Course(string u, string v, int p, int q){\n            this->name=u;\n            this->instructorInCharge=v;\n            this->numberOfStudents=p;\n            this->totalMarks=q;\n\n        }\n    \n    vector<int> studentMarks (numberOfStudents);\n\n    \n\n};\nclass Labs:public Course\n{\n   \n        vector<int>labMarks(numberOfStudents);\n\n};\n\nint main()\n{\n    Course c("Rahul","Hota",200,300);\n    cout<<"hello there";\n}\n
Run Code Online (Sandbox Code Playgroud)\n

当我编译此代码时,我\xe2\x80\x99m 收到以下错误:

\n
1.cpp:20:31: error: 'numberOfStudents' is not a type\n   20 |     vector<int> studentMarks (numberOfStudents);\n      |                               ^~~~~~~~~~~~~~~~\n1.cpp:28:29: error: 'numberOfStudents' is not a type\n   28 |         vector<int>labMarks(numberOfStudents);\n      |                             ^~~~~~~~~~~~~~~~\n
Run Code Online (Sandbox Code Playgroud)\n

请告诉我我的错误是什么。\nnumberostudents 应该是向量的大小。但没有任何功能。

\n

eer*_*ika 8

vector<int> studentMarks (numberOfStudents);
Run Code Online (Sandbox Code Playgroud)

这是一个函数声明。返回类型为vector<int>,名称为 ,studentMarks并且它接受类型为 的单个参数numberOfStudents。正如错误所指出的,除了,numberOfStudents它不是一种类型。

您不能使用括号来指定默认成员初始值设定项。您必须使用花括号:

T member {value};
Run Code Online (Sandbox Code Playgroud)

或“等于”初始化器:

T member = value;
Run Code Online (Sandbox Code Playgroud)

但请注意,您不会初始化numberOfStudents成员,而是稍后在构造函数主体中对其进行分配。此分配是在studentMarks初始化之后进行的,因此默认成员初始化程序studentMarks不会反映分配的大小。相反,由于使用了不确定的值,程序的行为将是不确定的。numberOfStudents这可以通过在成员初始化列表中初始化来解决。

  • @SaiRahul 它被解释为函数声明,因为这是函数声明的语法。如果您编写函数声明,编译器无法知道您无意编写函数声明。如果您打算使用默认成员初始值设定项定义成员,请按照我的回答中的建议进行操作。 (4认同)