-2

コードをコンパイルしようとしていますが、何が間違っているのか理解できません。コンパイルの順番かもしれないと思いますが、間違いがわかりません。

私のエラーコード:

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

私のmakeファイル:

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
4

1 に答える 1

5

ファイル間に循環参照.hがあります。ファイルAdminServer.hJokeServer.h相互にインクルードします。この問題を解決するには、前方宣言を使用する必要があります。

たとえば、JokeServer.h

#ifndef JOKESERVER_H
#define JOKESERVER_H

// REMOVE THIS
// #include "AdminServer.h"

// ADD THIS
class AdminServer;

また、クラスの定義にアクセスするには、インクルードによって間接的にインクルードされたすべてのファイル(たとえば、)をインクルードする必要があることに注意してください。AdminServer.hJokeServer.hJokeServer.cppAdminServer.hAdminServer

于 2013-01-20T19:05:37.103 に答える