c++ - 将模板参数与 null 进行比较

标签 c++ templates null

我有一个带有模板参数的方法

bool insert_into_tree(const T new_key, const long &new_index){}

T 仅限于 std::stringint 类型。我希望 new_key 的值有意义,因此我不想要一个空的 std::string 但可以接受 int 的零值.

这是一个 Java 模板与 null 比较的例子

if (key == null) {}

key defined as T extends Comparable<? super T>

在 C++ 中

key is defined as template <class T>

如果Tstd::string,则没有重载运算符== 以便与NULL 进行比较> 是可能的。

如果 Tint,则可以接受与 null 的比较。

那么,我可以使用什么方法使模板参数比较像在 Java 中一样工作?

换句话说,如果在 Java 中我有一个可以与 null 进行比较的模板参数,那么我如何在 c++ 中比较模板参数,以便可以实现 NULL 或其他一些表示 null 的适当值。

最佳答案

首先请记住,这不是 Java,而是 C++,它们的工作方式不同。可能最相似的方法是创建一个 Comparable模板并确保key以及您要比较以实例化它的类。所以不要使用 std::string你会用 Comparable< std::string >这是一种方法,但几乎可以肯定不是最好的方法。

重载比较运算符以提供所需比较的更好方法。这将使您在比较中更加具体。不过要注意隐式转换。

无论您选择哪种方式,都将主要基于更广泛的代码上下文,如果没有更多信息,则很难具体说明哪种方法最好。

关于c++ - 将模板参数与 null 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15972207/

相关文章:

c++ - 转换为 static_cast<unsigned char>

c++ - 在使用 __interface 关键字时,如何使编译器为定义方法体的类发出错误?

c++ - 没有正确关闭任务栏关闭事件

c++ - 调用模板化成员函数与模板化全局函数在通用工厂中创建对象

c++ - 获取没有对象的成员函数的返回类型

mysql存储过程跳过空参数

c++ - 没有 ftruncate 和物理文件的 Linux 上的共享内存?

c++ - 将字符数组初始化为C++中的NULL

MySQL:检测文本 "NULL"或 0 字段并将其更改为正确的 NULL

c++ - 将任意类的成员函数指针存储为类实例变量