我有一个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);

10-08 08:05