Gcc 构造函数中初始化的字符串对列表

Gcc 构造函数中初始化的字符串对列表,gcc,std-pair,c++98,stdlist,Gcc,Std Pair,C++98,Stdlist,我有两个类,调度器类和cshw类。计划程序的构造函数需要std::list名称。CSHW类继承自调度程序,在CSHW类的构造函数中,我执行CSHW::CSHW():调度程序({std::make_pair(“mfp”,“mfp”)}){i获取未找到的符号错误。 我基本上需要将字符串对的列表传递给调度器构造函数,这在c++11中有效,但我只在c++98中遇到这个问题 #ifndef SCHEDULER_H_ #define SCHEDULER_H_ #include <list>

我有两个类,调度器类和cshw类。计划程序的构造函数需要
std::list名称
。CSHW类继承自调度程序,在CSHW类的构造函数中,我执行
CSHW::CSHW():调度程序({std::make_pair(“mfp”,“mfp”)}){
i获取未找到的符号错误。 我基本上需要将字符串对的列表传递给调度器构造函数,这在c++11中有效,但我只在c++98中遇到这个问题


#ifndef SCHEDULER_H_
#define SCHEDULER_H_

#include <list>
#include <utility>
#include <string>

class scheduler {
public:
               std::list < std::pair<std::string, std::string>  > names;
               scheduler(std::list < std::pair<std::string, std::string> > names);
               virtual ~scheduler();
};

class cshw : public scheduler{
public:
               std::list < std::pair<std::string, std::string>  > m_szPanelNames;
               cshw();
               virtual ~cshw();
};

scheduler::scheduler(std::list < std::pair<std::string, std::string> > pnames) {
               names = pnames;
}

scheduler::~scheduler() {
}

cshw::cshw():
                              scheduler ({std::make_pair("mfp", "MFP") }){
}

cshw::~cshw() {
               // TODO Auto-generated destructor stub
}
#endif /* SCHEDULER_H_ */

#ifndef调度程序_
#定义调度程序_
#包括
#包括
#包括
类调度程序{
公众:
std::list名称;
调度程序(std::list名称);
虚拟调度程序();
};
类cshw:公共调度程序{
公众:
std::listm_szPanelNames;
cshw();
虚拟的~cshw();
};
调度程序::调度程序(std::listpnames){
名称=pnames;
}
调度程序::~scheduler(){
}
cshw::cshw():
调度程序({std::make_pair(“mfp”,“mfp”)}){
}
cshw::~cshw(){
//TODO自动生成的析构函数存根
}
#endif/*调度程序*/
我得到的构造函数与调度程序的错误不匹配。我认为这是由于我试图将列表对初始化为参数造成的。
在c++98中,如何将对列表作为参数传递?

您可以在
cshw
中添加helper方法,该方法生成列表:

class cshw : public scheduler{
public:
               std::list < std::pair<std::string, std::string>  > m_szPanelNames;
               cshw();
               virtual ~cshw();

              // added
              std::list< std::pair<std::string,std::string> > genList()
              {
                  std::list< std::pair<std::string,std::string> > l;
                  l.push_back(std::make_pair("mfp","MFP"));
                  return l;
              }
};

cshw::cshw():
   scheduler ( genList() ) 
{;}