编译多个文件 C++,不命名类型
compile multiple files c++, doesnt name a type
我在使用代码块编译多个文件时遇到问题。我的问题是编译器无法识别我创建的 class 类型。我收到错误未命名类型。我在所有头文件中都添加了#ifndef、#define。我的文件是:
forum.h
#include <list>
#include "thread.h"
class Forum
{
private:
std::list<Forum*> forums;
std::list<Thread*> themata;
}
thread.h
#include <list>
#include "forum.h"
#include "post.h"
class Thread
{
private:
Forum* forum; //gia tin allagi thesis otan ginei stick
int id;
std::list <Post*> lista;
}
post.h
#include "system.h"
class Post
{
private:
System* system;
}
我能做些什么?
你有一个循环 header 依赖。使用前向声明来打破它。例如,在 forum.h
中,向前声明 Thread
class 而不是像这样包含它的 header:
#include <list>
class Thread;
class Forum
{
private:
std::list<Forum*> forums;
std::list<Thread*> themata;
};
在 forum.cpp
中包含 header。
我在使用代码块编译多个文件时遇到问题。我的问题是编译器无法识别我创建的 class 类型。我收到错误未命名类型。我在所有头文件中都添加了#ifndef、#define。我的文件是:
forum.h
#include <list>
#include "thread.h"
class Forum
{
private:
std::list<Forum*> forums;
std::list<Thread*> themata;
}
thread.h
#include <list>
#include "forum.h"
#include "post.h"
class Thread
{
private:
Forum* forum; //gia tin allagi thesis otan ginei stick
int id;
std::list <Post*> lista;
}
post.h
#include "system.h"
class Post
{
private:
System* system;
}
我能做些什么?
你有一个循环 header 依赖。使用前向声明来打破它。例如,在 forum.h
中,向前声明 Thread
class 而不是像这样包含它的 header:
#include <list>
class Thread;
class Forum
{
private:
std::list<Forum*> forums;
std::list<Thread*> themata;
};
在 forum.cpp
中包含 header。