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

时间:2019-07-26 15:44:09

标签: gcc std-pair c++98 stdlist

我有两个类,调度程序和cshw类。调度程序的构造函数需要std::list < std::pair<std::string, std::string> > names。 CSHW类继承自调度程序,在cshw类的构造函数中,我做cshw::cshw():scheduler ({std::make_pair("mfp", "MFP") }){时遇到未找到符号错误。 我基本上需要将字符串对列表传递给Scheduler构造函数,这在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_ */

我得到一个与调度程序不匹配的构造函数错误。我认为这是由于我尝试将列表对初始化为参数引起的。 在c ++ 98中将对列表作为参数传递的方式是什么?

1 个答案:

答案 0 :(得分:0)

您可以在cshw中添加帮助程序方法,以生成列表:

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;
              }
};

然后将其结果作为参数scheduler传递给初始化列表:

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

Live demo