有没有办法使用派生类访问基类中的值

Is there a way that I can access the values in the base class using the derived class?

本文关键字:基类 访问 派生 有没有      更新时间:2023-10-16

我正在使用 c++,我不知道如何使用派生类访问基类中的变量。我需要获取基类中的值并在派生类中执行操作,因为基类中的所有函数都包含参数,当我调用函数时,

前任:

Baseclass.getvalue();

我不能提出任何参数,因为它没有定义。

我已经做了构造函数部分,例如

class derivedclass:baseclass
{
//insert functions here.
};
derivedclass::derivedclass()
     :baseclass()
{
 //insert initialization here
}

但我仍然无法访问这些值。 帮助? 我需要使用虚拟吗? 如果是,如何?

*这是一个用户定义的程序

>只需访问(publicprotected)值,就好像它们是派生类的一部分一样。

class baseclass {
  protected:
      int m_value;
  public:
       baseclass();
       virtual int getvalue();
};
class derivedclass : public baseclass {
  void dosomething(void) {
     // whoa: `m_value` is part of `baseclass`, and we can simply access it here!
     std::cout << "value: " << m_value << std::endl;
     // we can also use `getvalue()`
     std::cout << "getvalue(): " << getvalue() << std::endl;
  }
};

在这种情况下,继承是私有的,因此基子对象及其成员只能在派生类及其友元中访问。默认情况下,如果使用 class 关键字引入类定义,则成员和基类是私有的,使用 struct 关键字引入公共类。如果要从外部访问它们,则需要公共继承:

class derivedclass : public baseclass {/*...*/};

struct derivedclass : baseclass  {/*...*/};
如果派生类

没有通过声明具有相同名称的成员来隐藏成员,则可以像访问派生类的成员一样访问它。 (如果继承是受保护的或私有的,则它将在派生类中受到保护或私有,因此可能无法访问)。

如果它是隐藏的,并且您特别想要基类版本,则需要限定成员名称:

Derived.baseclass::getvalue()

但如果是这种情况,那么就会发生一些时髦的事情,类接口可能需要重新考虑。