在VS2013中继承构造函数

时间:2015-01-11 17:23:14

标签: c++ inheritance visual-studio-2013 polymorphism

VS2013似乎不支持C ++ 11的构造函数继承,如下所述: http://msdn.microsoft.com/en-us/library/hh567368.aspx

所以以下内容对我来说是不可能的:

class Animal {
public:
    int age;
    explicit Animal(int _age) {
        this->age = _age;
    }
};

class Dog : public Animal {
public:
    using Animal::Animal;
};

int main() {
    Dog d = Dog(5);
}

VS2013中没有硬编码Dog的构造函数与Animal相同吗?

1 个答案:

答案 0 :(得分:3)

你能做的最近的就是完美地转发构造函数;

template <typename... Args>
Dog(Args&&... args)
: Animal(std::forward<Args>(args)...)
{ }

在某些情况下,它仍然与using Animal::Animal不完全相同,但它至少可以让你获得所有Animal构造函数,并保护你免受更改,迫使你每次重写Dog的构造函数。