<分区>
我有一个包含两个同名函数的基类,一个带有 vector<int>
作为参数和一个带有 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()
但如果可能,我不想这样做,因为我想访问一些派生类函数。