【发布时间】:2013-07-11 06:31:31
【问题描述】:
所以我知道根据纯粹主义者的说法,我做错了什么,这是从 std::vector 继承的,但我想添加非常具体的功能,我认为这些功能作为 vector 的子代很有意义。 无论如何,这不是我主要关心的问题。
我有我的课:
class A : public std::vector<std::vector<double>>
{
public:
A(size_type n, const value_type& val);
... other moethods ...
};
我不明白的是,在构造函数中,为什么:
Matrix::Matrix(size_type n, const value_type& val):
vector(n, val)
{
}
工作,如果我把:
Matrix::Matrix(size_type n, const value_type& val):
std::vector(n, val)
{
}
它不会编译? (使用 GCC-4.8)我的代码中没有 using namespace std 声明。
【问题讨论】:
-
它需要构造函数的名称,而不是类型。
-
发布一个可重现错误的独立代码示例。
-
你不应该真的从 std::vector 派生。改为成为会员。
-
如果你必须从 std::vector 继承,我可以推荐私有继承而不是公共继承吗?
-
但是我在代码的其他地方使用了vector的标准操作(push_back等...)(注意:这只是用于原型设计,不是生产代码)
标签: c++ inheritance constructor namespaces