gpt4 book ai didi

c++ - 错误 : no match for ‘operator==’ in ‘boiler::uniqueInstance == 0l’

转载 作者:行者123 更新时间:2023-11-28 00:57:16 25 4
gpt4 key购买 nike

#include <iostream>
using namespace std;

class boiler
{
private:
static boiler uniqueInstance;

bool boilerEmpty;
bool mixtureBoiled;

boiler()
{
boilerEmpty = true;
mixtureBoiled = false;
}

public:
static boiler getInstance()
{
if(uniqueInstance == NULL)
{
uniqueInstance = new boiler();
}

return uniqueInstance;
}
};

以上代码返回标题中所述的错误。

anisha@linux-y3pi:~> g++ -Wall test.cpp
test.cpp: In static member function ‘static boiler boiler::getInstance()’:
test.cpp:22:26: error: no match for ‘operator==’ in ‘boiler::uniqueInstance == 0l’
test.cpp:24:34: error: no match for ‘operator=’ in ‘boiler::uniqueInstance = (operator new(2u), (<statement>, ((boiler*)<anonymous>)))’
test.cpp:5:1: note: candidate is: boiler& boiler::operator=(const boiler&)

为什么?我们不能将“对象”与 NULL 进行比较吗?是否存在一些语法问题?

最佳答案

你可能需要一个指针:

static boiler* uniqueInstance;

从那时起,您将在此处使用 new 对其进行初始化:

uniqueInstance = new boiler ();

编译器告诉您它无法将 boiler 的实例与 int(实际上是 long)进行比较。这种比较是不存在的。指针可以与整数类型进行比较,这允许与 0 进行比较。

此处与 NULL 的比较用作检查您的指针是否已初始化的方法。如何对实例执行此操作并不明显,没有无效或未初始化实例的概念。您可以通过定义适当的 operator== 将对象与 NULL 进行比较,但这种比较可能没有意义,因为 NULL 通常只是另一个对象0 的名称。

关于c++ - 错误 : no match for ‘operator==’ in ‘boiler::uniqueInstance == 0l’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10443457/

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