好吧,这难倒我。相对 C++ 菜鸟,但长期使用 C# 和其他语言。
这是问题文件的一个相对简单的提炼:
/* GameObject.h */
#pragma once
#include <vector>
class GameObject {
public:
std::vector<Component *> *Components;
GameObject();
~GameObject();
};
/* GameObject.cpp */
#include "GameObject.h"
#include "Component.h"
GameObject::GameObject() {
}
GameObject::~GameObject() {
}
/* Component.h */
#pragma once
class Component {
public:
GameObject *Owner;
Component();
~Component();
};
/* Component.cpp */
#include "GameObject.h"
#include "Component.h"
Component::Component() {
}
Component::~Component() {
}
这会在 Visual C++ 2012 中产生 21 个完全不相关的错误,我猜是因为它无法编译组件:
C2065: 'Component' : undeclared identifier gameobject.h 10
C2059: syntax error : '>' gameobject.h 10
C2143: syntax error : missing ';' before '}' gameobject.h 14
C2143: syntax error : missing ';' before '{' component.h 3
C2143: syntax error : missing ';' before '}' component.h 11
C2143: syntax error : missing ';' before '{' gameobject.cpp 8
C2143: syntax error : missing ';' before '}' gameobject.cpp 9
C2143: syntax error : missing ';' before '{' gameobject.cpp 13
C2143: syntax error : missing ';' before '}' gameobject.cpp 14
C2143: syntax error : missing ';' before '}' gameobject.cpp 16
C1004: unexpected end-of-file found gameobject.cpp 16
C2065: 'Component' : undeclared identifier gameobject.h 10
C2059: syntax error : '>' gameobject.h 10
C2143: syntax error : missing ';' before '}' gameobject.h 14
C2143: syntax error : missing ';' before '{' component.h 3
C2143: syntax error : missing ';' before '}' component.h 11
C2653: 'Component' : is not a class or namespace name component.cpp 8
C2143: syntax error : missing ';' before '{' component.cpp 8
C2143: syntax error : missing ';' before '}' component.cpp 9
C2653: 'Component' : is not a class or namespace name component.cpp 13
C1903: unable to recover from previous error(s); stopping compilation component.cpp 13
有任何想法吗?在设计中 Component 有一个指向 GameObject 的指针,而 GameObject 有一个指向 Components 的指针向量是有意义的,所以我不打算重新架构以避免这种情况。我猜我只是对头文件做错了。
提前感谢您的任何想法,这让我发疯了。