这是怎么回事?
#include "MyClass.h"
class MyOtherClass {
public:
MyOtherClass();
~MyOtherClass();
MyClass myVar; //Unknown type Error
};
突然间,当我包含 .h 并写入 var Xcode 时,给我带来了很多错误……还有未知类型错误。
.h 就在那里,怎么会不知道呢?
这是与示例中的 MyClass.h 相对应的 NodeButton.h 文件
#pragma once
#include "cinder/Vector.h"
#include "cinder/gl/gl.h"
#include "cinder/gl/Texture.h"
#include "cinder/Color.h"
#include "cinder/ImageIo.h"
#include "cinder/Timeline.h"
#include "cinder/app/AppBasic.h"
#include "cinder/App/App.h"
#include "Node.h"
#include "CursorMano.h"
using namespace ci;
using namespace ci::app;
using namespace std;
using namespace is;
typedef boost::shared_ptr<class NodeButton> NodeButtonRef;
class NodeButton : public Node2D
{
public:
NodeButton (CursorMano *cursor, string imageUrl, bool fadeIn = false, float delay = 0.0f);
virtual ~NodeButton ();
//methods
void update( double elapsed );
void draw();
void setup();
//events
bool mouseMove( ci::app::MouseEvent event );
//vars
CursorMano *mCursor;
gl::Texture mImageTexture;
Anim<float> mAlpha = 1.0f;
bool mSelected = false;
private:
};
下面是 CursorMano.h 的内容,对应于示例中的 MyOtherClass.h。
#pragma once
#include <list>
#include <vector>
#include "cinder/app/AppBasic.h"
#include "cinder/qtime/QuickTime.h"
#include "cinder/gl/Texture.h"
#include "cinder/Vector.h"
#include "NodeButton.h"
using namespace ci;
using namespace ci::app;
using namespace std;
class CursorMano {
public:
CursorMano (AppBasic *app);
~CursorMano ();
void mueveMano(Vec2i);
void update();
void draw();
void play(int button);
void reset(int button);
Vec2i mMousePos;
NodeButton mButtonCaller; //this gives the unknow type error
private:
AppBasic *mApp;
gl::Texture mFrameTexture;
qtime::MovieGl mMovie;
int mIdButton;
};
最佳答案
你的头文件有一个循环依赖。
NodeButton.h
定义 NodeButton
类 CursorMano.h
需要包含以便编译器可以看到 NodeButton
的定义但是NodeButton.h
本身包括 CursorMano.h
.
您需要使用前向声明来打破这种循环依赖。
在NodeButton.h
您只需使用指向 CursorMano
的指针所以你不需要包括 CursorMano.h
只需在 using 命名空间声明之后转发声明类。
using namespace std;
using namespace is;
class CursorMano;
关于c++ - C++ 中的未知类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9171307/