【发布时间】:2014-08-04 13:28:38
【问题描述】:
这段代码给了我错误,它遵循基类指针来存储派生类对象。 G++ 编译器给出这样的错误“错误:在‘obj’中请求成员‘print’,它是非类类型‘base*’”
#include<iostream>
using namespace std;
class base
{
public:
void print()
{
cout<<"Inside Base \n";
}
};
class derived : public base
{
public:
void print()
{
cout<<"Inside Derived \n";
}
};
int main()
{
base *obj;
derived obj2;
obj = &obj2;
obj.print();
return 0;
}
【问题讨论】:
-
变量
obj是一个指向类的指针,这意味着你不能使用非指针成员选择操作符.。您的问题与继承或多态无关,您只是有一个非常简单的语法错误。 -
请注意,这里没有多态性,因为 print 没有在基类中声明为虚拟(没有创建虚拟表)
标签: c++ function polymorphism runtime virtual