[] 演算子の値を作成する関数を継承して上書きできるクラスが必要です。これらが同じ結果にならないのはなぜですか? ポインターを使用せずに 2 番目の結果を取得する方法はありますか?
コード:
#include <iostream>
using std::cout;
class session {
public:
session(){}
~session(){}
void operator[](const char* c) {foo(c);}
protected:
virtual void foo(const char* c) {cout << "parent called" << "\n";}
};
class session2 : public session {
public:
session2(){}
~session2(){}
protected:
virtual void foo(const char* c) {cout << c << "\n";}
};
int main() {
session2 s2;
session a = s2;
a["child called"];
session* b = &s2;
(*b)["child called"];
return 0;
}
出力:
parent called
child called