C++错误返回类型?
我在Visual Studio中遇到了两组错误,其中包含以下类头文件:C++错误返回类型?
编辑:抱歉,家伙们忘记显示我确实包含了窗口。
#include "Window.h"
class Spark
{
public:
Window& getWindow(); // #1
Window *win; // #2
};
#1具有以下问题:
error C2143: syntax error : missing ';' before '&'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
#2有一个非常类似的故事...
error C2143: syntax error : missing ';' before '*'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
我是新的C++,所以我可能搞砸向上。我想要做的#1是返回一个Window对象的引用和#2我试图创建一个指针,该对象创建后将被设置为一个窗口对象(因此我使用指针)。
经过四处搜寻并盯着这一段时间,我看不到这两条线有什么问题。它看起来像VS挂在返回类型,基本上没有得到它。但据我所知,我正确地构造了这些声明。
在此先感谢您的帮助。
在我看来,好像类型Window
未知。在头文件中包含Window
,并确保您使用的是正确的名称空间或使用完全限定的类型名称。
更新: 在循环依赖的情况下,您既可以删除依赖某种方式或使用预先声明,以避免这种情况。在Spark的声明之前,只需放置一条class Window;
行:
class Window;
class Spark {
Window *test;
}
我应该包括这个,窗口是在另一个头文件中定义的,它已包含在内,我编辑了我的帖子以显示此内容。 – 2013-02-14 05:58:22
通常会出现此类错误,因为在您尝试使用它时没有在范围内声明Window
。
这可能是由许多问题引起的,其中之一可能是缺少的#include
。
你可以看到这个具有通过编译下面的代码(用g++
)效果:
//typedef int xyzzy;
int main(void) {
xyzzy plugh;
return 0;
}
的输出(注意最后一行):
prog.cpp: In function 'int main()':
prog.cpp:3: error: 'xyzzy' was not declared in this scope
prog.cpp:3: error: expected `;' before 'plugh'
但是当,你取消了第一行的注释,它编译得很好。您需要在尝试使用它之前声明Window
。
如果您似乎指出,您相信您做定义Window
,您需要检查。这可能是因为你在#ifdef
内部有一个不活动的声明,或者你的文件包含在一个循环中,以防止正确的声明顺序或任何数量的其他事情。
编译器不知道当前有任何“Window”。 – chris 2013-02-14 05:56:03
如何定义'Window'? – 2013-02-14 05:56:33
“Window”定义在哪里?你忘了一个'#include'吗? – Foggzie 2013-02-14 05:57:05