我有一个c++ 03类,带有一个带整数的简单构造函数。还有一个带有序列化方法的派生类,该方法应采用文件名作为构造函数,从中加载整数,然后调用第一个构造函数。
class A {
public:
A(int foo);
}
和派生类:
class XmlableA : public A {
public:
XmlableA(int foo);
XmlableA(string xmlfilename) {
//load foo from xml
// call A::A(foo)
}
}
我尝试了一些不同的解决方案,但每次我得到
no matching function for call to ‘A::A()’
最佳答案
几乎所有答案都是相同的,因此我建议使用不同的解决方案,我个人更希望这样做。
将static
成员函数Create
定义为:
class XmlableA : public A {
public:
XmlableA(int foo);
//static member function
static XmlableA Create(string const & xmlfilename)
{
//load foo from xml
int foo = /*load from file*/;
return XmlableA(foo);
}
};
用法:
XmlableA xmlable = XmlableA::Create(xmlFile);