2012-07-28 30 views
2

的代码:获得私有内部类到主

class Vec 
{ 
public: 
    Vec() {len=0;}; 
    Vec(int n); 
    ~Vec(); 
    void setValue(int idx,int v); 
    void printVec() const; 
private: 
    class Items 
    { 
     friend class Vec; 
     Items(){value = 0;}; 
     Items(int v){value = v;}; 
     int value; 
    }; 
    int len; 
    Items *vec; 
}; 

/*Declare the member functions & constructor & destructor*/ 

int main() 
{ 
    Vec vector(5); 
    vector.printVec(); 
    for(int i=0;i<5;i++){ 
     vector.setValue(i,i); 
     vector.printVec(); 
    } 
    Items n; 
    return 0; 
} 

当我尝试使用Items n;,我得到一个错误:“未申报的项目”。

但在使用时vector.Items n;,还是错误是“无效使用class Vec::Items

我怎样才能让编译器识别的声明?

回答

2

I wanna make it can be declared.

您需要使Items公共嵌套的或内部类Vec类的,然后使用范围分辨率算子(即,Vec::Items)创建对象类型的实例时。否则,只能在Vec的方法内创建一个Vec::Items对象的实例,因为它将是Vec的私有内部类,而不是可公开访问的类类型。

+0

thx for andswr! – 2012-08-01 15:04:22