派生类不能访问父类方法

Derived Class cannot access Parent class method

本文关键字:父类 类方法 访问 不能 派生      更新时间:2023-10-16

当我尝试这样编译代码时,我得到一个错误"类派生没有名为'getX'的成员":

class Base
{
    public:
        int getX() {return x};
    protected:
        int x;
};   
class Derived : public Base
{
    public:
        void myFunction(){int y = getX()};
};
我设计这个例子是为了帮助澄清,因为当我的派生类试图使用它应该继承的父类的方法时,我得到了很多这样的错误。我试过在方法调用之前使用"this"关键字,但这也不起作用。谢谢你的帮助。

修改代码

class Base
{
    public:
        int getX() {return x; }
    protected:
        int x;
};   
class Derived : public Base
{
    public:
        int myFunction(){int y = getX(); return y; }
};

编译
g++ -c -o /dev/null -Wall derive.c

.

请阅读错误。这里调用基类函数没有问题。编译错误与语法错误有关。

参考下面的编译代码。

class Base
{
 protected:
     int x;
 public:
     int getX() {return x;};
};
class Derived : public Base
{
  public:
      void myFunction(){int y = getX();};
};

你应该使用更好的编码风格,这可能会解决一个问题。

代码:

int getX() {return x};

实际上是:

int getX() 
{
    return x
};

如你所见,;放错了位置。必须是:

int getX() 
{
    return x;
}

同样的问题出现在void myFunction(){int y = getX()};

花了几个小时试图编译代码后,我放弃了,并将所有父类的方法和成员复制到子类中。谢谢你的回答。