C++ "does not name a type" - 无法编译源文件
C++ "does not name a type" - unable to compile source files
我正试图编译我的代码,我不知道我做错了什么。我想可能是我的编译顺序不对,但是我不知道我的错误。
我的错误代码:
g++ -w -c JokeServer.cpp
In file included from JokeServer.h:4:0,
from JokeServer.cpp:52:
AdminServer.h:9:2: error: ‘JokeServer’ does not name a type
make: *** [JokeServer.o] Error 1
谢谢。
JokeServer.h文件:
#ifndef JOKESERVER_H
#define JOKESERVER_H
#include "AdminServer.h"
#include "Subject.h"
#include "Observer.h"
#include "Worker.h"
class JokeServer: public Subject {
private:
AdminServer* m_admin_server;
public:
//public functions
};
#endif
AdminServer.h文件:
#ifndef ADMINSERVER_H
#define ADMINSERVER_H
#include "JokeServer.h"
#include "AdminWorker.h"
class AdminServer {
private:
JokeServer* m_joke_server;
public:
//public functions
};
#endif
My make file:
CPPFLAGS = g++ -w
all: JokeServer JokeClient AdminClient
#-------------------------------------
# JOKE SERVER
#-------------------------------------
JokeServer: JokeServer.o Worker.o JokeGenerator.o ProverbGenerator.o AdminServer.o AdminWorker.o
$(CPPFLAGS) JokeServer.o Worker.o JokeGenerator.o ProverbGenerator.o AdminServer.o AdminWorker.o -o JokeServer -lpthread
JokeServer.o: JokeServer.cpp JokeServer.h Subject.h
$(CPPFLAGS) -c JokeServer.cpp
Worker.o: Worker.cpp Worker.h Observer.h
$(CPPFLAGS) -c Worker.cpp
JokeGenerator.o: JokeGenerator.cpp JokeGenerator.h
$(CPPFLAGS) -c JokeGenerator.cpp
ProverbGenerator.o: ProverbGenerator.cpp ProverbGenerator.h
$(CPPFLAGS) -c ProverbGenerator.cpp
AdminServer.o: AdminServer.cpp AdminServer.h
$(CPPFLAGS) -c AdminServer.cpp
AdminWorker.o: AdminWorker.cpp AdminWorker.h
$(CPPFLAGS) -c AdminWorker.cpp
您的.h
文件之间有一个循环引用。AdminServer.h
和JokeServer.h
文件相互包含。你应该使用前向声明来解决这个问题。
例如,在JokeServer.h
:
#ifndef JOKESERVER_H
#define JOKESERVER_H
// REMOVE THIS
// #include "AdminServer.h"
// ADD THIS
class AdminServer;
还要注意的是,所有通过包含JokeServer.h
间接地包含AdminServer.h
的文件(例如,我怀疑是JokeServer.cpp
)必须包含AdminServer.h
才能访问类AdminServer
相关文章:
- 生成一个生成文件,该生成文件使用Automake在一个步骤中编译和链接所有源文件
- make 命令如何避免重新编译未更改的源文件?
- 在 Visual Studio 中的 1 个项目中编译单个 C++ 源文件
- 如何在Visual Studio 2019中有条件地编译c++源文件
- 从源文件编译 QOpenGLshader 时出错
- C++ SD 总线源文件编译问题
- C :使用标题和源文件,源文件不编译
- 源文件未使用最新版本的Dev C 和OpenCV 3.x版本编译
- C++ 编译时检查微控制器引脚是否已从其他源文件初始化
- 如果我的源文件中使用常数,则如何使编译很好地停止
- 如何指示emscripten在编译过程中应在哪里找到源文件
- 在RCPP中编译多个源文件
- 开发DEV C 源文件未编译
- 编译目录中的所有源文件,并将 objs 存储在不同的目录中
- Makefile 将在文件更改时链接文件,但不会重新编译更改的源文件
- 如何让 CMake 编译包含 Boost Local Functions 的源文件
- 编译几个源文件(主文件和头文件)并在ROOT CINT中链接它们
- QtCreator - 编译问题 - 外部源文件
- 如何更改从多个源文件编译的g++生成的Linux共享库的入口点
- 用g++将多个源文件编译成一个.o