我有两个类,调度程序和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中将对列表作为参数传递的方式是什么?
答案 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() )
{;}