C++ 如何在继承类中共享结构?
我想与继承类共享一个C++ 如何在继承类中共享结构?,c++,c++11,overriding,C++,C++11,Overriding,我想与继承类共享一个struct。但我不知道如何编写这样的代码 这是我想写的示例代码,但错误发生在这段代码中。我想与Parent和ChildA共享struct Info。一旦我在main中设置了Info,我就不想更改Info中的值,而是想从Parent和ChildA访问Info中的值。所以我把Info传递给Parent和ChildA #include <memory> #include <iostream> #include <vector> struct
struct
。但我不知道如何编写这样的代码
这是我想写的示例代码,但错误发生在这段代码中。我想与Parent
和ChildA
共享struct Info
。一旦我在main
中设置了Info
,我就不想更改Info
中的值,而是想从Parent
和ChildA
访问Info
中的值。所以我把Info
传递给Parent
和ChildA
#include <memory>
#include <iostream>
#include <vector>
struct Info
{
Info(int num) :
memberNum(num)
{
}
const std::string surName = "foge";
const int memberNum;
};
class Parent
{
public:
Parent(std::shared_ptr<Info> info) :
info(info)
{};
virtual ~Parent() {};
protected:
std::shared_ptr<Info> info;
};
class ChildA : public Parent
{
public:
ChildA(std::shared_ptr<Info> info) :
info(info) // error : C++ is not a nonstatic data member or base class of class
{ // error : C++ no default constructor exists for class
};
~ChildA() {};
};
int main(int argc, char** argv)
{
int num = 4;
std::shared_ptr<Info> info = std::make_shared<Info>(num);
std::unique_ptr<Parent> pa = std::make_unique<Parent>(info);
std::unique_ptr<Parent> chA = std::make_unique<ChildA>(info);
return 0;
}
#包括
#包括
#包括
结构信息
{
信息(整数):
memberNum(num)
{
}
const std::string name=“foge”;
常量int memberNum;
};
班级家长
{
公众:
父级(标准::共享\u ptr信息):
信息(信息)
{};
虚拟~Parent(){};
受保护的:
std::共享的ptr信息;
};
ChildA类:公共家长
{
公众:
ChildA(标准::共享信息):
信息(/C++)/错误:C++不是类的非静态数据成员或基类
{//Crime:C++ +类不存在默认构造函数
};
~ChildA(){};
};
int main(int argc,字符**argv)
{
int num=4;
std::shared_ptr info=std::make_shared(num);
std::unique_ptr pa=std::make_unique(信息);
std::unique_ptr chA=std::make_unique(信息);
返回0;
}
我不确定这是一种好的写作方式。
有人知道吗?谢谢大家! 你需要改变
ChildA(std::shared_ptr<Info> info) :
info(info)
};
ChildA(std::shared_ptr info):
信息(信息)
};
到
ChildA(std::shared_ptr info):
家长(信息)
{
};
因为信息是父项的一部分,所以需要对其进行初始化。
有关更多信息,请参阅。您需要更改
ChildA(std::shared_ptr<Info> info) :
info(info)
};
ChildA(std::shared_ptr info):
信息(信息)
};
到
ChildA(std::shared_ptr info):
家长(信息)
{
};
因为信息是父项的一部分,所以需要对其进行初始化。
有关更多信息,请参阅。“我想与多个继承类共享一个结构。”请详细解释。你想要实现什么?当它工作时,你希望做什么?请举例说明。使用
ChildA(std::shared_ptr info):Parent(info)
,说明info(info)
不属于那里;这是通过他的导师在家长班为你做的。这是他的成员。std::shared_ptr info=nullptr代码>可以简化为std::shared_ptr info
@Yunnosch谢谢你的评论,我更新帖子并解释more@Evg谢谢你的评论,我更新了代码。“我想与多个继承类共享一个结构。”请解释更多。你想要实现什么?当它工作时,你希望做什么?请举例说明。使用ChildA(std::shared_ptr info):Parent(info)
,说明info(info)
不属于那里;这是通过他的导师在家长班为你做的。这是他的成员。std::shared_ptr info=nullptr代码>可以简化为std::shared_ptr info
@Yunnosch谢谢你的评论,我更新帖子并解释more@Evg谢谢你的评论,我更新了代码。