2013-05-02 36 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

相关问题