#include <iostream>
using namespace std;
struct A
{
virtual int func(void) { return 0; }
};
struct B : A
{
int func(void) { return 1; }
};
int main()
{
A b = B();
cout << b.func() << endl;
}
は、私はあなたのほとんどがその0
を知っているように、出力が1
ことが、し期待していました。C++:仮想関数の呼び出し親
実際のコードで達成したいものは、これらの行に沿ったものです。
struct A
{
virtual int operator() (int i);
};
struct B : A
{
int operator() (int i) { return i*2; }
};
struct C : A
{
int operator() (int i) { return i*3; }
};
struct x
{
A test;
};
だから私のコンテナは、A
、B
またはC
を保持する場合は、手の前に伝えることができなくなりますが、それでも異なる動作をする必要があります。
私はそれが動作すると予想して機能を達成する方法はありますか?
ありがとう、しかしポインタなしでこれを達成する方法はありませんか?親オブジェクトと子オブジェクトはすべて、関数を含む単なるクラスであり、可変メンバは存在しません。 – user2255757
ポインタや参照がない方法はありません。 – user6556709