继承 VS2013 中的构造函数

Inheriting constructor in VS2013

本文关键字:构造函数 VS2013 继承      更新时间:2023-10-16

>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相同?

你能做的最接近的就是完美地前进构造函数;

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

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