我有一个类管理文件的内容并将文件转换为二进制缓冲区,我有一个内部类,它是文件中的一个元素(基本上它代表一行)。像:
class CSR{
private:
//some fields
public:
Elem operator[](int numRow);
//other methods
public:
class Elem{
private:
//other fields
public:
friend CSR::Elem CSR::operator[]( int r );
};
};
编译器(VS 2012 Express)告诉" CSR没有成员运营商[]"
答案 0 :(得分:0)
我不确定语言规则是什么,但前方声明Elem似乎让gcc 4.7和VS 2010都满意:
class CSR{
private:
//some fields
public:
class Elem;
Elem operator[](int numRow);
//other methods
public:
class Elem{
private:
//other fields
public:
friend CSR::Elem CSR::operator[]( int r );
};
};
答案 1 :(得分:0)
你需要对你内心阶级的前瞻声明 - 但不幸的是,这是不允许的 This post有一些可能的解决方法 - 没有一个特别有吸引力。