我得到這個錯誤在幾個變量的幾種方法(所有這些都是向量):變量未在此範圍內聲明?
error: ‘parent’ was not declared in this scope
我已經試過包裝「命名空間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
這裏是我的cpp文件寫的方法之一(沒有的#includes)的例子:
unsigned DisjointSubsets::findDS(unsigned index) {
return parent[index];
}
(改該方法是非功能性的,但仍然說明會導致問題的那種線路,以防其他人在工作中對此作出絆倒)
這似乎有點內而外,什麼是頭文件的理由包括源文件?通常你會想要包含hpp文件的cpp文件(或者至少我會!)。 – 2011-05-25 08:27:58
我不知道;我只是使用我提供的頭文件。這可能與makefile的編寫方式有關。 – Ryan 2011-05-25 08:29:45
如果您在編譯時遇到多個差異錯誤,請記住您在頭文件中包含cpp。當使用不同編譯器的模板時,有時使用這種「技巧」,當有些模板支持'export'關鍵字時。 – RedX 2011-05-25 08:44:58