2013-05-02 37 views
1

信息:Microsoft Visual Studio 2012 Ultimate,Windows 8 Professional,C++。 我有一個問題...使用包含文件進行編譯時的錯誤(自有類)

QIClassStringOperations.hpp

#include "Q.hpp" 
class QIClassStringOperations 
{ 
    public: 
     virtual void FromString(const QString& Str) = 0; 
     virtual QString ToString() = 0; 
}; 

Q.hpp

#include "QString.hpp" 

QString.hpp

template <typename Type> class CString 
{ 
    //... 
}; 
typedef CString<char> QString; 
編制

我有這樣的錯誤:

c:\...\QIClassStringOperations.hpp(13): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 

問題這一行:

virtual void FromString(const QString& Str) = 0; 

對不起,我的英語不好:)。 你能幫我嗎?

+0

應該工作。如果你聲明你的函數是這樣的:'virtual void FromString(const CString &Str)= 0;'? 類型和類定義沒有被包裝到某些名稱空間中? – psibar 2013-05-02 15:52:22

+0

當我用CString替換QString 時,什麼也沒有發生。每個代碼都包含在命名空間QEngine(我的小框架)中。我想可能是項目設置中的項目錯誤或錯誤。 – Creators 2013-05-02 15:59:49

+0

錯誤消息中的行號表明,您省略了一些代碼。錯誤是否與您粘貼的確切代碼一起發生?你可否提供一個最小的例子,不能用上面提到的錯誤信息進行編譯? – 2013-05-02 17:38:50

回答

0

看起來像QString沒有作爲一種類型重新調整? 你在哪裏聲明QString?

+0

我在QString.hpp中聲明QString(在同一個項目中)與模板CString 的typedef相同。 VS2012通常在項目中看到這個類,並突出顯示QString。 – Creators 2013-05-02 15:44:32

0

您應該包括在Q.hpp的#include「QString.hpp」,您聲明類QIClassStringOperations,因爲它應該知道QString的是什麼。否則,編譯器會給出錯誤。

欲瞭解更多詳情,請訪問:http://msdn.microsoft.com/en-us/library/ms173696.aspx

+0

我包含這個文件(#include「QString。hpp「)在Q.hpp中,但是我在QIClassStringOperations.hpp中聲明瞭該類。是否應該在QIClassStringOperations.hpp文件中包含(#include」QString.hpp「)或者在Q.hpp文件中預先聲明? – Creators 2013-05-02 17:03:18

相關問題