我正在尝试在类中创建类的实例。我已经声明了两个类=第一个
class Student{
public:
Student(string m,int g){
name=m;
age=g;
}
string getName(){
return name;
}
int getAge(){
return age;
}
private:
string name;
int age;
};
第二,我想创建学生实例。
class Class{
public:
Class(string n){
name = n;
};
string studentName(){
return Martin.getName();
}
private:
string name;
Student Martin("Martin",10);
Student Roxy("Roxy",15);
};
我一直收到这个错误
'((Class *)this) - > Class :: Martin'没有类类型
字符串常量之前的预期标识符|
学生在课前被定义,所以它不应该有问题来访问它。 是什么导致这种行为?我该如何解决?
答案 0 :(得分:4)
成员初始化应该在构造函数初始化列表中完成:
SELECT SUBSTR(column_name, 1, 3) FROM table_name;
有关成员初始化的更多信息,请访问: http://en.cppreference.com/w/cpp/language/initializer_list
更多类似教程的解释也可能对您有用: http://www.learncpp.com/cpp-tutorial/8-5a-constructor-member-initializer-lists/
正如James Root在评论中指出的那样,而不是:
Class(string n)
: Martin("Martin",10)
, Roxy("Roxy",15)
{
name = n;
};
private:
string name;
Student Martin;
Student Roxy;
你可以写
private:
string name;
Student Martin("Martin",10);
Student Roxy("Roxy",15);
但请确保使用c ++ 11标准编译代码。在较旧的编译器上,您可能需要将-std = c ++ 11添加到编译命令中,如: g ++ -o foo -std = c ++ 11 main.cpp