好的我有一个结构数组,(不是结构的指针数组),-lesson-也是一个内部有一些属性的类。
struct Mystruct{
lesson* data;
mystruct* next;
};
class Myclass{
public:
Myclass();
Mystruct getarray();
private:
Mystruct* array;
};
//in the myclass(); constructor I am doing;
Myclass* array = new Myclass[8];
我需要知道是否
array[i].next
是空的或者不是,因为它不是指向结构的指针数组,我不能这样说;
if(array[i] == NULL)
或
if(&(array[i]) == NULL)
我怎么能这样做,我正在寻找的答案不是“它是一个结构数组,你根本无法做这个检查,如果它是一个指针.... bla bla”。 请帮助我找到一种方法,所有的答案和方法都非常感谢..
* *编辑:让我为您澄清一下,我需要检查一下;
array[i].next = new lesson(//parameters);
这个动作是否完成,我需要知道是否初始化了array [i] th元素中的“next”对象。 (数组的第[i]个元素包含一个链表,我通过列表搜索并向其添加对象,如果列表头不为空,我必须找到一种方法来计算出来并在结尾处添加对象链表)
我怎样才能更清楚,但有些人只是点击不喜欢按钮而不是试图提供帮助,这是一个严重的问题,而不是巨魔,我试图更清楚,就像我可以,但你们没有帮助,只是点击和离开,我还能说些什么......:/
我添加了更多代码,让您想象一下情况。
答案 0 :(得分:2)
是否为空,
定义“空”。你的意思是未初始化?如果是这样,那么只需将每个元素初始化为某个默认值。初始化指向nullptr
(C ++ 11)或0
的指针,然后在使用它们之前进行检查。对象“空”是没有意义的。
另请注意MyClass
是......好吧,根本不是一个班级。总之...
如果您只是使用默认构造函数那么重点是什么?当你分配这个内存时,它将填充默认的构造对象,所以......
struct Mystruct
{
Mystruct()
: data(nullptr), next(nullptr) {}
lesson* data;
myclass* next;
};
现在您正确地将指针x
和y
初始化为null。
根据你的编辑...
编辑:让我为你澄清一下,我需要检查一下;array [i] .next =新课程(//参数); 这个动作是否完成,我需要知道数组[i]元素中的“下一个”对象是否被初始化。
是的,因为我们现在正确初始化成员变量......
if(!array[i].next)
// next is null, initialize it
答案 1 :(得分:0)
我认为你问题中的Mystruct和Myclass是相同的类型。
只需将empty()成员函数添加到结构中,然后调用它:
struct Mystruct{
lesson* data;
myclass* next;
bool empty() const { return next == 0; }
};
Myclass* array = new Myclass[8](); // extra () to make this array zeroed
//... some code
if (array[2].empty()) { ....; }
或者添加全局函数empty():
struct Mystruct{
lesson* data;
myclass* next;
};
bool empty(const Mystruct& o) const { return o.next == 0; }
Myclass* array = new Myclass[8](); // extra () to make this array zeroed
//... some code
if (empty(array[2])) { ....; }
或者手动检查下一个成员:
struct Mystruct{
lesson* data;
myclass* next;
};
Myclass* array = new Myclass[8](); // extra () to make this array zeroed
//... some code
if (array[2].next == 0) { ....; }
BTW,而不是将指针比较为0,将其与nullptr进行比较(如果只有你的编译器支持nullptr)。