构造函数中的字符串对列表初始化
List of pairs of strings initialization in constructor
我有两个 classes,调度程序和 cshw class。调度程序的构造函数需要 std::list < std::pair<std::string, std::string> > names
。 CSHW class 继承自调度程序,在 cshw class 的构造函数中我做 cshw::cshw():scheduler ({std::make_pair("mfp", "MFP") }){
我得到一个符号未找到错误。
我基本上需要将字符串对列表传递给调度程序构造函数,这在 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 中将成对列表作为参数传递的方法是什么?
您可以在生成列表的 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() )
{;}
我有两个 classes,调度程序和 cshw class。调度程序的构造函数需要 std::list < std::pair<std::string, std::string> > names
。 CSHW class 继承自调度程序,在 cshw class 的构造函数中我做 cshw::cshw():scheduler ({std::make_pair("mfp", "MFP") }){
我得到一个符号未找到错误。
我基本上需要将字符串对列表传递给调度程序构造函数,这在 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 中将成对列表作为参数传递的方法是什么?
您可以在生成列表的 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() )
{;}