您如何检查对象是否为空,如果是,则运行一段代码?
函数原型如下所示:
bool Order::add(int n)
我需要检查n是否大于0且对象不为空。(数据成员为0或null)我真的不确定如何执行此操作来检查对象是否为空,因为我不能在条件中使用* this。任何帮助,将不胜感激。
这是班级:
#include "ean.h"
class Order {
int copies;
int delivered;
bool filled = false;
EAN eanno;
public:
Order();
Order(const EAN& ean);
EAN& getEAN();
int outstanding() const;
bool add(std::istream& is);
bool add(int n);
bool receive(std::istream& is);
void display(std::ostream& os) const;
};
std::ostream& operator<<(std::ostream& os, const Order& order);
以下是两个构造函数:
Order::Order() {
copies = 0;
delivered = 0;
this->eanno;
}
Order::Order(const EAN& ean) {
Order();
this->eanno = ean;
}
答案 0 :(得分:1)
没有关于班级的任何信息,很难回答。这个怎么样 ? :
bool Order::add(int n)
{
if( n > 0 )
if( member1 != 0 || member2 != 0 || member3 != 0 )
{
... // do something
}
}
或许我不明白这个问题?
答案 1 :(得分:0)
我认为你问的是测试if (*this == 0)
哪个不是你想要的,因为*this
总是由构造函数初始化,永远不会返回0或nullptr。你想要测试它的成员。
为了清晰起见,您应该为您的类定义empty()(如果它尚不存在):
bool Order::empty() const {
return m1 == 0 && m2 == nullptr; // whatever conditions you use to define whether your object is null goes here. Don't test on *this because it will always be a constructed object, never null.
}
bool Order::add(const int n) {
if (n > 0 && empty()) {
... // your code goes here
return true;
}
return false;
}
如果你没有改变结构中的任何东西,请考虑将其设为const。