0

以下は私のindex.hクラスです

class index
{

struct node {
        string item;
        int counter;
        vector<int> pageNumber;
    };

public:
    node* newNode (string word);
    ...

private:
    vector<node*> indexStructure;
    int lineCounter;
    int indexSize;

};

私のindex.cppクラスには、次のようなメソッド定義があります。

node* index::newNode (string word)
{
    node* temp = new node();
    temp.item = word;
    temp.counter = 1;
    temp.pageNumber = new vector <int> (10, -1);
    temp.pageNumber[0] = lineCounter / 40;
    return temp;

}

コンパイルすると、index.hの構造体で定義されていて、プライベートベクトル変数がnode *型を持つことができるにもかかわらず、「ノードは型に名前を付けていません」と表示されます。

4

2 に答える 2

7

nodeはのネストされたクラスであるため、グローバル名前空間内でindex呼び出されます。index::node

これは「グローバル名前空間」内にあるindex::ため、関数本体内からfromを省略でき、cppファイルの署名でのみ指定する必要があることに注意してください。index::node

于 2012-09-28T00:41:11.267 に答える
2

に変更しindex::node* index::newNode(string word)ます。あなたが試みている方法でそれを行うために必要なスコープは、関数名の終わりの後まで確立されません。

于 2012-09-28T00:40:57.390 に答える