gpt4 book ai didi

C++:为什么我的 DerivedClass 的构造函数无法访问 BaseClass 的 protected 字段?

转载 作者:IT老高 更新时间:2023-10-28 12:50:03 25 4
gpt4 key购买 nike

我有一个构造函数试图初始化基类中的一个字段。编译器提示。该字段 protected ,因此派生类应该具有访问权限。

//The base class: 

class BaseClass

{

public:

BaseClass(std::string);
BaseClass(const BaseClass& orig);
virtual ~BaseClass();
const std::string GetData() const;
void SetData(const std::string& data);
protected:

BaseClass();
std::string m_data;

};

BaseClass::BaseClass(const std::string data) : m_data(data) { }

BaseClass::BaseClass() { }

BaseClass::BaseClass(const BaseClass& orig) { }

BaseClass::~BaseClass() { }

void BaseClass::SetData(const std::string& data)
{
m_data = data;
}

const std::string BaseClass::GetData() const
{
return m_data;
}


//The derived class:


class DerivedClass : public BaseClass
{

public:

DerivedClass(std::string data);
DerivedClass(const DerivedClass& orig);
virtual ~DerivedClass();
private:

};

DerivedClass::DerivedClass(std::string data) : m_data(data) { } //ERROR HERE

DerivedClass::DerivedClass(const DerivedClass& orig) { }

DerivedClass::~DerivedClass() { }

//编译错误

DerivedClass.cpp:3:错误:“DerivedClass”类没有任何名为“m_data”的字段

非常感谢任何帮助。提前谢谢你。

最佳答案

您不能在派生类构造函数中初始化 m_data,而是将其作为参数传递给基类构造函数。

即:DerivedClass::DerivedClass(std::string data) : BaseClass(data) { }

关于C++:为什么我的 DerivedClass 的构造函数无法访问 BaseClass 的 protected 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3319892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com