如何在C++中检查类是否为null?假设我有Line
类:如何在C++中检查null类
Line line[1000];
if (line[0] == NULL)
cout << "NULL";
else
cout << "NOT NULL";
我得到这个错误消息:
中没有匹配关于 '操作符=' '线[I] = 0'
如何在C++中检查类是否为null?假设我有Line
类:如何在C++中检查null类
Line line[1000];
if (line[0] == NULL)
cout << "NULL";
else
cout << "NOT NULL";
我得到这个错误消息:
中没有匹配关于 '操作符=' '线[I] = 0'
指向一个实例可以是NULL而不是类实例。
ISO标准的第5.17节说
有几个赋值运算符 ,所有的组 从右到左。所有这些操作数都需要一个 可修改的左值作为它们的左边的 操作数,而赋值 表达式的类型是其左边的 操作数。作业 操作的结果是在作业发生后 发生后存储在 左操作数中的值;结果是一个左值。
这是因为'='的重载操作符与您提供的任何重载实例都不匹配。
你需要将它初始化为Line *而不是简单的Line并且它应该起作用。如果你重载void *(例如new)会更好。
您的Line类不是NULL。您有1000个Line实例,由默认构造函数创建。可以说,你可以使用Line & operator == (const int) const
来测试NULL,然后比较一些内部成员,但这样做很奇怪。
要回答你的问题,line[0]
的类型为Line&
,它可以被理解为reference to a Line object
。在C++中,引用不能是NULL
。
您的问题中的错误消息似乎来自您尚未发布的一行代码。我只能根据错误消息推测您正尝试将值0
分配给位于索引i
处的线对象。由于=
运算符在Line
类中未超载,因此编译器无法解析类型差异。
你的代码显示==,但你说错误是=? – crashmstr
只是我的代码的一小部分 – brian
是的,但:错误指定了operator =,您的代码显示==(这将是运算符==。这些不一样,并且错误与代码不匹配。 – crashmstr