有没有办法使用派生类访问基类中的值
Is there a way that I can access the values in the base class using the derived class?
我正在使用 c++,我不知道如何使用派生类访问基类中的变量。我需要获取基类中的值并在派生类中执行操作,因为基类中的所有函数都包含参数,当我调用函数时,
前任:
Baseclass.getvalue();
我不能提出任何参数,因为它没有定义。
我已经做了构造函数部分,例如
class derivedclass:baseclass
{
//insert functions here.
};
derivedclass::derivedclass()
:baseclass()
{
//insert initialization here
}
但我仍然无法访问这些值。 帮助? 我需要使用虚拟吗? 如果是,如何?
*这是一个用户定义的程序
>只需访问(public
或protected
)值,就好像它们是派生类的一部分一样。
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()
但如果是这种情况,那么就会发生一些时髦的事情,类接口可能需要重新考虑。
相关文章:
- 为什么此派生对象无法访问基类的后递减方法?
- 继承和友元函数,从基类访问受保护的成员
- 无法访问基类函数 C++
- 相同的层次结构,访问基类的受保护成员时的行为不同
- 如何从派生类中的基类访问变量的值?
- 抽象类的需求是什么?为什么要通过其基类访问派生类方法?在C++
- 如何从另一个类的基类访问派生类中的受保护成员
- 尝试从基类访问受保护的构造函数时出现错误 C2248
- 从C++中的基类访问子数据
- 从抽象基类访问另一个基类成员
- 从Derivered类设置值,同时从基类访问相同的值
- 如何使用多态性从基类访问派生类向量成员
- 如何在C++中从基类访问派生类的属性
- 从基类访问联合的公共部分
- (c++)从私有基类访问私有成员变量
- 类的某些成员只能由基类访问吗
- 无法从c++基类访问变量
- C++从基类访问两个类组成中的私有成员
- 基类访问规范与类成员访问规范
- 从基类访问派生类