0
我收到此錯誤。這就像編譯器無法識別我聲明Enum沒有被聲明?
g++ -c main.cc
In file included from Storage.h:7:0,
from Server.h:5,
from Control.h:8,
from main.cc:5:
Serializer.h:11:36: error: ‘Storage::UpdateType’ has not been declared
Serializer.h:12:45: error: ‘Storage::UpdateType’ has not been declared
make: *** [main.o] Error 1
任何人都有一個想法是什麼這個誤差約爲因爲枚舉已經beeen聲明。受影響的代碼如下:
Serializer.h
#ifndef SERIALIZER_H
#define SERIALIZER_H
#include "Storage.h"
class Storage;
class Serializer{
public:
Serializer();
void serialize(List&, Storage::UpdateType&, std::string&);
void deserialize(std::string&, Storage::UpdateType&, List&);
};
#endif
storage.h定義
#ifndef STORAGE_H
#define STORAGE_H
#include "List.h"
#include "Interface.h"
#include "Movie.h"
#include "Serializer.h"
class Storage{
public:
enum UpdateType {ADD, DELETE, RETRIEVE};
Storage();
~Storage();
List* list;
void retrieve(List*);
void update(UpdateType, List*);
void handleRequest(string&, string&);
private:
//Serializer serial;
};
#endif
循環包含依賴項:'Storage.h'包含'Serializer.h',反之亦然。這是行不通的。 – juanchopanza
不,它沒有,因爲它具有防止循環依賴的宏觀防護。 – zmo
@zmo是的。衛兵不解決這個問題。 – juanchopanza