非仮想インターフェイス (NVI) を持つ親クラスがあります。
class Parent {
private:
virtual int do_function(void) = 0;
public:
int function(void);
virtual ~Parent() {};
}
そして、子クラス(実は子クラスはたくさんあるのですが、このように動作させたいのはこの1つだけです)
class Child : public Parent {
private:
int _x;
int do_function(void) { return _x; };
public:
Child(int x): Parent(), _x(x) {}
virtual ~Child() {return do_function();};
}
そして、私は関数を呼び出したい:
int myFunction(Parent& x) {
return x.function();
}
コードを使用して
int x = 5;
myFunction(x);
しかし、そうではありません
int myFunction(const Child& x) {
return x.function();
}
これは正常に動作します。型の暗黙的な変換でこれを行うことは可能ですか?