我有A班和B班。
A类有一些领域。B类是这样的:
class B {
public:
A* operator[]( int id ) {
return m_field.at( id );
}
/* also tried this one, but there are the same errors
A*& operator[]( int id ) {
return m_field.at( id );
}
*/
private:
vector<A*> m_field;
};
为什么我在执行时遇到错误:
B* B_instance = new B();
B_instance[some_int]->some_field_from_A;
错误是:
错误 C2819:类型 'B' 没有重载成员 'operator ->'
错误 C2039:“some_field_from_A”:不是“B”的成员
为什么我需要 -> 运算符重载以及它应该是什么样子?这对我来说没有意义。
我正在使用 Visual Studio 2012。