如何在Qt C ++中从另一个类实例化一个类

问题描述

| 我在项目中上了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 &parameter2 );
};
Cpp 2:
SecondClass::function2( const QString &parameter2 )
{
  // your func
}
标头1: 您可以包含h​​eader2.h或使用类似的前向声明
class SecondClass;

class FirstClass
{
public:
    QString function( const QString &parameter );

    SecondClass *s2;
};
Cpp 1:
#include \"SecondClass.h\"

FirstClass::function( const QString &parameter )
{
    s2 = new SecondClass;
    QString str1;
    list = s2->function2(parameter1);
}
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...