继承VS2013中的构造函数
Inheriting constructor in VS2013
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
的构造函数每次。
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
的构造函数每次。