问题描述
|
我在项目中上了2节课。我想使用从第一类到第二类的函数,问题是我无法实例化第一类到第二类。顺便说一下,两个类都在不同的头文件中声明。
这是一个示例代码:
标头1:
class 1stclass{
public:
2ndclass *class2;
void function1(QString parameter1)
{
QString str1;
list = class2->function2(parameter1);
}
};
标头2:
class 2ndclass{
public:
QString function2(QString parameter2)
{
QString str2 = parameter2 + \"hello\";
return str2;
}
};
我想在功能2中使用该功能,但它给了我一个错误。
这是错误消息:
ISO C ++禁止没有类型的\'2ndclass \'声明;
预期\'; \'在\'* \'标记之前;
\'class2 \'未在此范围内声明;
解决方法
在C ++中,类名不允许以数字开头。
Class1
和Class2
是有效名称。
,尝试创建指针时,编译器对第二类一无所知。您是否忘了在第二个类声明中包含头文件?该文件是否包含在您的qt项目文件或Makefile中?顺便说一句,标识符的第一个字符不能是数字,只能是a-z和下划线。
,为什么不使用.cpp文件。
除非包含标头,否则第一类不知道什么是第二类。
标头2:
class SecondClass
{
public:
QString function2( const QString ¶meter2 );
};
Cpp 2:
SecondClass::function2( const QString ¶meter2 )
{
// your func
}
标头1:
您可以包含header2.h或使用类似的前向声明
class SecondClass;
class FirstClass
{
public:
QString function( const QString ¶meter );
SecondClass *s2;
};
Cpp 1:
#include \"SecondClass.h\"
FirstClass::function( const QString ¶meter )
{
s2 = new SecondClass;
QString str1;
list = s2->function2(parameter1);
}