【发布时间】:2018-10-14 07:17:05
【问题描述】:
基构造函数的using 声明是私有的,但仍然可以构造该类。为什么?
对于必须公开的 operator[] 的 using 声明,辅助功能的工作方式不同。
#include <vector>
template<typename T>
class Vec : std::vector<T>
{
private:
using std::vector<T>::vector; // Works, even if private. Why?
public:
using std::vector<T>::operator[]; // must be public
};
int main(){
Vec<int> vec = {2, 2};
auto test = vec[1];
}
如果我希望构造函数是私有的怎么办?可以通过using 声明来完成吗?
【问题讨论】:
-
@RemyLebeau 编译器生成的构造函数需要一个初始化列表?
-
我不得不说我被否决票迷惑了。这是一个很好的问题,minimal reproducible example 等等。
-
也许缺乏研究工作,因为 cppr 用简单的英语解释它@juanchopanza?无论如何,我想讨论它没有多大用处。
标签: c++ inheritance constructor using-declaration