Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在c++;_C++_Function_Polymorphism_Runtime_Virtual - Fatal编程技术网

C++ 在c++;

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

这段代码给出了一个错误,它跟随基类指针来存储派生类对象。G++编译器给出的错误如下:“错误:请求'obj'中的成员'print',该成员为非类类型'base*'”

#包括
使用名称空间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;
}