删除了 'simple_vector::simple_vector(int)' 的定义
Posted
技术标签:
【中文标题】删除了 \'simple_vector::simple_vector(int)\' 的定义【英文标题】:Deleted definition of 'simple_vector::simple_vector(int)'删除了 'simple_vector::simple_vector(int)' 的定义 【发布时间】:2019-03-25 00:27:00 【问题描述】:我正在使用动态数组在 C++ 中创建一个简单的向量类。必须删除带有int
参数的构造函数。
我有两个错误:
从我的 cpp 文件中删除了 simple_vector::simple_vector(int)
的定义。
我的 hpp 文件中 simple_vector::simple_vector(int)
的先前声明。
发生了什么事?我班的名字是simple_vector
。它只能包含double
元素。
老实说,我不知道该怎么做。
Hpp 文件
simple_vector(const int a);
Cpp 文件
simple_vector::simple_vector(const int a) = delete;
【问题讨论】:
明确构造函数。 ***.com/questions/121162/… @RetiredNinja 如果删除的函数不是显式的,你会得到更好的错误消息(当试图隐式转换时,“没有可行的函数”变成“使用删除的函数”,这使得你无法构造意图来自int
更清晰)
除非您计划为每个可能转换的类型编写已删除的构造函数,否则如果您不想要隐式转换,那么显式仍然是一个好主意。不一定非要如此。
作为一个信息点,C++ 不支持动态数组。
【参考方案1】:
您不能在cpp
文件中的定义 上将您的构造函数标记为delete
'd,您需要在其声明 中将其标记为hpp
文件。
在hpp
文件中,更改:
simple_vector(const int a);
到这里:
simple_vector(const int) = delete;
在cpp
文件中,将其完全删除:
simple_vector::simple_vector(const int a) = delete;
【讨论】:
毕竟,如果=delete
隐藏在另一个翻译单元中,编译器如何将使用标记为错误?以上是关于删除了 'simple_vector::simple_vector(int)' 的定义的主要内容,如果未能解决你的问题,请参考以下文章
win7下装了双系统,后来删除了Ubuntu,现在怎么删除Ubuntu开机引导项?
datagridview行删除时,之前都能删除,但就是最后一行删除时,数据库删除了,但datagridview却还显示它。