变量未在此范围内声明?

Rya*_*yan 0 c++

我在几个变量的几个方法中得到了这个错误(所有这些都是向量):

error: ‘parent’ was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

我已经尝试将我的方法实现包装在"namespace DisjointSubsets {...}"中,但这会导致其他问题.它似乎只对矢量这样做,我尝试在cpp文件的开头添加一个"#include vector",它没有改变任何东西.

这是头文件:

#ifndef UNIVERSE 
#define UNIVERSE 
#include <vector>
class DisjointSubsets { 
    public :
        DisjointSubsets ( unsigned numberElements = 5 ) ;
        unsigned findDS ( unsigned ) ;
        bool unionDS ( unsigned , unsigned ) ;
    private :
        vector<unsigned> parent ;
        vector<unsigned> rank ;
        unsigned size ;
} ;
#include "DisjointSubsets.cpp"
#endif
Run Code Online (Sandbox Code Playgroud)

以下是我在cpp文件中编写的方法之一(没有#includes)的示例:

unsigned DisjointSubsets::findDS(unsigned index) {
    return parent[index];
}
Run Code Online (Sandbox Code Playgroud)

(将方法更改为不起作用,但仍然说明会导致问题的那种行.以防万一其他人在工作中遇到此问题.)

MKr*_*ert 6

您必须使用std::vector<unsigned>而不是仅仅vector<unsigned>声明parent因为vectorstd命名空间中声明.因此,您也可以using namespace std;在声明类之前使用它.

但是,我认识的大多数人都不鼓励你在头文件中使用第二种形式.有关此主题的更详细讨论,请参阅C++ FAQ.