类中的类:"不是类型"错误
Class inside a class: 'is not a type' error
这是我尝试的一个简化版本
#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;
}
在编译时,它给出错误'p'不是类型。谁能告诉我怎么了?
最烦人的解析。a Test(p,q);
被解析为一个函数声明。您不希望这样(我假设)-相反,您希望将成员声明为a Test;
并在构造函数中对其赋值。
你能做的就是显式初始化它:
public:
b(int pinit, int qinit): p(pinit), q(qinit), Test(p, q) { }
这一行
a Test(p,q)
声明返回类型为a
的方法,并接受类型为p
和q
的(匿名)参数。您可能想使用:
a Test(int p, int q);
如果你想将它声明为类属性,你必须为类a创建非参数构造函数:
a() {}
在构造函数中初始化Test
:
b(int pinit, int qinit)
{
p=pinit;
q=qinit;
Test=a(p,q);
}
或者使用初始化语法:
b(int pinit, int qinit):
p(pinit),
q(qinit),
Test(pinit,qinit)
{
}
您没有为函数Test
的参数声明数据类型
a Test(p,q);
必须是这样的:
a Test(int p, int q);
您可以这样编写代码
#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), Test(p, q){}
private:
int p,q;
a Test;
};
int main()
{
return 0;
}
相关文章:
- 类没有命名C++代码中的类型错误
- 不完整类型错误(E0409、E0070、E0515)
- 使用具有结构不完整类型错误的模板
- 不命名构造函数和析构函数上的类型错误
- 返回派生类型时出现协变类型错误
- 为什么此构造函数没有给出不完整的类型错误?
- 定义模板化结构的特征时出现不完整的类型错误
- 使用重载构造函数时出现不完整的类型错误
- 为什么我得到表达式必须有类类型错误?
- 输出 [left]=input[i] 行中的 c++ 代码中存在无效的类型错误
- 枚举成员不是类型错误
- 如何修复"ctypes"。参数错误:参数 2:<键入"异常.类型错误">:RaspberryPi 中的错误类型"错误
- 外部 "C" Visual Studio 2015 中的显式类型错误,DLL 测试代码
- 非默认析构函数会导致不完整的类型错误
- 为什么按引用传入会导致绑定引用类型错误
- Objective-C C++ 包装器 类型错误的不完整定义
- 输入类型错误
- 当构造函数的参数类型错误时引发异常
- 命名空间中的'bad_cast' 'std' 未命名类型错误
- C UNWORKOWN类型错误