C++ 在c++;
这段代码给出了一个错误,它跟随基类指针来存储派生类对象。G++编译器给出的错误如下:“错误:请求'obj'中的成员'print',该成员为非类类型'base*'”C++ 在c++;,c++,function,polymorphism,runtime,virtual,C++,Function,Polymorphism,Runtime,Virtual,这段代码给出了一个错误,它跟随基类指针来存储派生类对象。G++编译器给出的错误如下:“错误:请求'obj'中的成员'print',该成员为非类类型'base*'” #包括 使用名称空间std; 阶级基础 { 公众: 作废打印() { cout您有语法错误。还要注意,即使我将代码从obj.print()更改为obj->print(),它也将引用基类中的print() #include<iostream> using namespace std; class base { public
#包括
使用名称空间std;
阶级基础
{
公众:
作废打印()
{
cout您有语法错误。还要注意,即使我将代码从obj.print()更改为obj->print(),它也将引用基类中的print()
#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;
}
#包括
使用名称空间std;
阶级基础
{
公众:
作废打印()
{
cout变量obj
是指向类的指针,这意味着您不能使用非指针成员select运算符
。您的问题与继承或多态性无关,您只是有一个非常简单的语法错误。请注意,这里没有多态性,因为print在基类中没有声明为virtual(没有创建虚拟表)为什么不谈谈print()
也不是虚拟的呢?
#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;
}