gpt4 book ai didi

c++ - 为什么我不能将命名空间放在父类构造函数调用中?

转载 作者:行者123 更新时间:2023-11-30 01:58:21 27 4
gpt4 key购买 nike

所以我知道根据纯粹主义者的说法我做错了一些事情,它是从 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 声明。

最佳答案

Why can't I put namespace in parent class constructor call?

你可以,而且你应该。但是需要指定基类的模板参数:

Matrix::Matrix(size_type n, const value_type& val): std::vector<std::vector<double>>(n, val)
// ^^^^^^^^^^^^^^^^^^^^^

您不应该公开派生自 std::vector,但您已经知道这一点。

关于c++ - 为什么我不能将命名空间放在父类构造函数调用中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17586532/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com