Boost assign list_of 一个结构

Boost assign list_of for a structure

我有一个关于 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 的数组。这是遗留代码的一个版本,其中一些 类 被定义为具有构造函数的结构。

谢谢, PDK

我不确定 "where the some classes are defined as structs with the constructors" 是什么意思。

我看到的是聚合,即使在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 声明不同。