派生类无法访问父类方法

时间:2015-07-10 06:08:36

标签: c++ inheritance

我收到错误“类Derived没有名为'getX'的成员”当我尝试编译这样的代码时:

{{1}}

我设法这个例子来帮助澄清,因为当我的派生类试图使用它应该继承的父类中的方法时,我遇到了很多这样的错误。我在方法调用之前尝试使用'this'关键字,但这也不起作用。谢谢你的帮助。

4 个答案:

答案 0 :(得分:2)

更正您的代码

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

答案 1 :(得分:1)

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

请参阅下面的编译代码。

class Base
{
 protected:
     int x;

 public:
     int getX() {return x;};
};

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

};

答案 2 :(得分:1)

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

您的代码:

int getX() {return x};

实际上是:

int getX() 
{
    return x
};

如您所见;放错了地方。必须是:

int getX() 
{
    return x;
}

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

答案 3 :(得分:0)

在尝试编译代码几个小时之后,我就放弃并将所有父方法和成员复制到子类中。无论如何,谢谢你的答案。