类中的类:'不是类型'错误

Rob*_*yen 1 c++

这是我正在尝试的简化版本

#include <iostream>
using namespace std ;

class a
    {
    public:
    a(int xinit, int yinit){x=xinit; y=yinit;}

    private:
    int x, y;
    };

class b
    {
    public:
    b(int pinit, int qinit){p=pinit; q=qinit;}

    private:
    int p,q;
    a Test(p,q);
    };

int main()
    {
    return 0;
    }
Run Code Online (Sandbox Code Playgroud)

编译时,它给出错误'p'不是一种类型.谁能告诉我什么是错的?

小智 8

最烦恼的解析.a Test(p,q);被解析为函数声明.你不希望(我假设) - 相反,你想要将成员声明为a Test;并在构造函数中指定它.

所以你可以做的是明确地初始化它:

public:
b(int pinit, int qinit): p(pinit), q(qinit), Test(p, q) { }
Run Code Online (Sandbox Code Playgroud)

  • @aisbaa顺便说一句,你的命名惯例过于混乱.在我意识到`a`是类型而``Test`是成员变量的名称之前,我几乎失去了调试这个该死的初始化列表.它应该**真的是'一个测试;`... (2认同)