同じ名前の 2 つの関数を含む基本クラスがあります。1 つvector<int>
はパラメーターとして で、もう 1 つはint
です。子クラスは int を処理する独自のメソッドを定義し、基本クラスはどちらのオプションも処理できるようにするという考え方です。しかし、現時点ではコンパイルされません。
class base {
public:
virtual void toBeCalled(int i) const = 0;
virtual void toBeCalled(std::vector<int> iVec) const
{
std::cout << "base::toBeCalled(vec<int>)" << std::endl;
}
};
class derived : public base {
public:
virtual void toBeCalled(int i) const
{
std::cout << "derived::toBeCalled(int)" << std::endl;
}
};
int main(int argc, char* argv[])
{
derived d;
std::vector<int> iVec;
int i = 0;
d.toBeCalled (i);
d.toBeCalled (iVec); //<< Compile error: Cannot convert from std::vector<int> to int
return 0;
}
main() で基本クラス オブジェクトを使用して動作させることはできますbase *d = new derived()
が、派生クラス関数の一部にアクセスしたいので、可能であればこれを行いたくありません。