2011-05-26 15 views
0

我已經在我的項目由2類instatiate類。我想使用從第一類到第二類的功能問題是我無法實例化第一類到第二類。順便說一下,這兩個類在不同的頭文件中聲明。如何從另一個類使用Qt C++

這裏是一個示例代碼:

頭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的功能,但它給了我一個錯誤。 這裏是錯誤信息:

  1. ISO C++禁止聲明'2ndclass'沒有類型;
  2. 預計';' '*'令牌之前;
  3. 'class2'未在此範圍內聲明;
+2

你包括''2ndclass'文件header'將頭文件'1stclass'? – beduin 2011-05-26 08:48:14

+0

是的,我包括它 – 2011-05-26 08:50:22

+0

是否包含在'1stclass'的代碼之前(即在頂部)? – mlvljr 2011-05-26 08:53:35

回答

5

類名不允許開始用C++的數。

Class1Class2雖然是有效的名稱。

0

試圖創建指針時,編譯器不知道第二類東西。你不忘記包含第二類聲明的頭文件嗎?該文件是否包含在您的qt項目文件或Makefile中?順便說一下,一個indetifier的第一個字符不能是數字,只能是a-z和下劃線。

+0

我已經在第一類中包含了第二類的頭文件,但仍然得到相同的錯誤。 – 2011-05-26 08:54:03

+0

您的Makefile或qt項目文件中的所有文件都是? – 2011-05-26 08:56:05

-1

你爲什麼不使用.cpp文件。 除非包含標題,否則第一個類無法知道第二類是什麼。

標題2:

class SecondClass 
{ 
public: 
    QString function2(const QString &parameter2); 
}; 

.cpp的2:

SecondClass::function2(const QString &parameter2) 
{ 
    // your func 
} 

部首1: 可以包括header2.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); 
}