在类中创建类的实例

时间:2016-03-11 21:44:48

标签: c++ class

我正在尝试在类中创建类的实例。我已经声明了两个类=第一个

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'没有类类型

     

字符串常量之前的预期标识符|

学生在课前被定义,所以它不应该有问题来访问它。 是什么导致这种行为?我该如何解决?

1 个答案:

答案 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