c ++中未定义的结构类型

时间:2012-09-28 00:39:30

标签: c++ pointers types struct

以下是我的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中的结构中定义,并且我的私有向量变量可以具有类型节点*。

2 个答案:

答案 0 :(得分:7)

nodeindex中的嵌套类,因此在全局命名空间中称为index::node

请注意,您可以在函数体中省略index::,因此只需在cpp文件的签名中说index::node,因为它位于“全局命名空间”中。

答案 1 :(得分:2)

将其更改为index::node* index::newNode(string word)。在您尝试的方式下执行此操作所需的范围直到函数名称结束后才会建立。