【发布时间】:2018-09-10 20:05:42
【问题描述】:
class Base
{
public:
virtual void print() = 0;
};
class A : public Base
{
int mClassA;
public:
A() : mClassA(1) {}
void print() override { std::cout << "print A" << std::endl; }
void foo( A& arg ) { std::cout << mClassA << std::endl; }
};
class B : public Base
{
int mClassB;
public:
B() : mClassB(2) {}
void print() override { std::cout << "print B" << std::endl; }
void foo( B& arg ) { std::cout << mClassB << std::endl; }
};
所以我得到了类似的类结构。我应该采取什么方法来调用没有 dynamic_cast 的 foo ?
int main()
{
Base * obj1 = new A();
Base * obj2 = new A();
dynamic_cast<A*>(obj1)->foo(*dynamic_cast<A*>(obj2));
}
我可以使用基类参数创建 foo 方法,但我想确保我将 A 或 B 对象作为参数传递。
【问题讨论】:
-
可以用虚函数
virtual void foo()吗? -
I could create foo method with base class argument but I want to be sure that I'm passing A or B obejct as an argument.你甚至不能创建Base的实例,那么这句话到底是什么意思?
标签: c++ inheritance polymorphism