我在我的项目中做了2课。我想使用从第1类到第2类的函数问题是我无法将第1类实例化为第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中使用该函数,但它给了我一个错误。 这是错误消息:
答案 0 :(得分:5)
不允许类名以C ++中的数字开头。
Class1
和Class2
虽然是有效的名称。
答案 1 :(得分:0)
在尝试创建指针时,编译器对第二个类没有任何了解。难道你没有忘记在第二个类声明中包含头文件吗?该文件是否包含在qt项目文件或Makefile中?顺便说一下,整数的第一个字符不能是数字,只能是a-z和下划线。
答案 2 :(得分:-1)
为什么不使用.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);
}