gpt4 book ai didi

c++ - Boost 为结构分配 list_of

转载 作者:太空宇宙 更新时间:2023-11-04 13:40:27 26 4
gpt4 key购买 nike

我有一个关于 boost::assign_list 的问题

struct AClass{
AClass();
};

struct BClass{
BClass();
};

typedef AInfo{
string infoname;
AClass m_nAClass;
BClass m_nBClass;
};

typedef list<AInfo> listOfAInfo;

listOfAInfo m_mlistOfAInfo =
boost::assign::list_of("AInfoName1", AClass(), BClass() );

如何为结构初始化 map_lists 数组。这是遗留代码的一个版本,其中一些类被定义为具有构造函数的结构。

谢谢,开发包

最佳答案

我不确定“其中一些类被定义为具有构造函数的结构” 是什么意思。

我看到的是聚合,即使在 C++03(或 C++98 IIRC)中也可以使用聚合初始化语法进行初始化:

AInfo obj = { "AInfoName1", AClass(), BClass() };

也许你可以使用

typedef std::map<int, AInfo> listOfAInfo;

listOfAInfo m_mlistOfAInfo =
boost::assign::map_list_of
( 1, { "AInfoName1", AClass(), BClass() })
( 2, { "AInfoName2", AClass(), BClass() });

typedef std::list<AInfo> listOfAInfo;

listOfAInfo m_mlistOfAInfo =
boost::assign::list_of
( AInfo { "AInfoName1", AClass(), BClass() })
( AInfo { "AInfoName2", AClass(), BClass() });

这里是 Live On Coliru (c++11)。

似乎您不能使用统一初始化语法 (AInfo {...}),它与聚合初始值设定项 = { ... } 略有不同) 和 Boost Assign,因为编译器不知道你在初始化什么,这与上面显示的 obj 声明不同。

关于c++ - Boost 为结构分配 list_of,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27858761/

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