當我這樣做,我的編譯器抱怨。有3個錯誤是出現,雖然沒有錯誤信息可見:爲什麼我不能在我的課堂上做這個對象聲明?
#include <stdlib.h>
#include <vector>
#include <string>
#include "ParseException.h"
#include "CycleFoundException.h"
#include "UnknownTargetException.h"
using namespace std;
class Maker
{
private:
vector<Node> storage;
public:
Maker(string file) throw (ParseException, CycleFoundException, UnknownTargetException);
vector<string> makeTarget(string targetName);
};
struct Node
{
string target;
vector<string> dependencies;
string command;
int discoverytime;
int finishtime;
int visited;
Node* next;
};
編譯器不喜歡我vector<Node> storage
聲明。當我做vector<int> storage
而不是,它編譯沒有投訴。在另一個類中聲明一個類的對象是錯誤的嗎?我認爲這是正確的。
上面'class Maker'添加'class Node;'這稱爲前向聲明。 – andre