1

これを行うと、コンパイラが文句を言います。エラー メッセージは表示されませんが、次の 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なくコンパイルされます。あるクラスのオブジェクトを別のクラスで宣言するのは間違っていますか? これでいいと思いました。

4

1 に答える 1

7

Nodeの定義の前に の定義を配置する必要があるようですMaker

Nodeの定義Maker(行) で型名を使用しvector<Node> storageますが、まだ定義していないためNode、コンパイラはそれが何であるかを知りません。

于 2012-11-12T21:08:06.520 に答える