C++:另一个"检查指针是否为空"
C++: Another 'check if pointer is null'
我知道,有很多这样的问题。如何检查指针是否为NULL。我在这里和外面对此进行了研究,找到了一些很好的答案,但显然它们对我不起作用
我有这样的结构:
myModule.h
class myModule
{
public:
myThing *in;
myThing *out;
virtual ~myModule() {}
virtual myModule& bind(myModule &m) = 0;
};
myThing.h
class myThing
{
public:
myThing() {}
node *get_node() { return &n; }
signal *get_signal() { return &s; }
private:
node n;
signal s;
};
mySubModule.h
class mySubModule : public myModule
{
public:
virtual ~mySubModule() {}
virtual myModule& bind(myModule &m)
{
// Here comes the 'checkpoint'
if(!in)
in = new myThing();
in.doSomething();
}
};
myObject.h
class myObject : public mySubModule
{
// This is the 'real' object that will call 'bind'
};
所以当它通过"检查点"时,它总是指向某个东西,所以它永远不会进入"如果"。我想这是关于继承的问题,因为编译器不知道myThing
是什么,但如果能让"检查点"工作起来,那就太好了。我尝试将myThing *in, *out
初始化为NULL
,但它不起作用。
另外,由于virtual
的功能,接口myModule
可能有问题。我不确定那是正确的。这可能是原因吗?
如果有人想出一个主意,那就太棒了。
编辑
我刚刚意识到有个打字错误。"检查点"错误,它是if(!in)
而不是if(!myThing)
。
我使用这个检查点的目的是检查对象(myThing *in
)是否是NULL
。如果是NULL
,我会初始化它。如果不是,我会使用它。
我已经试过了:
class myModule
{
...
myModule()
{
in = NULL;
out = NULL;
}
...
}
但它对我不起作用。if(!in)
或if(in == NULL)
正在返回false
。
我应该在myObject
构造函数中初始化它吗?我不能在父构造函数中执行吗?
非常感谢:)
您需要在构造函数中初始化in,out。
顺便说一句,if(!myThing)甚至不会编译为myThing在任何地方声明或定义。
检查指针是否为null-只需检查指针是否是null if(ptr==null)。。。
请记住,指针在声明时不为null,因为它不会进行自初始化。因此,如果你真的想检查一个NULL指针,你应该把它设置为NULL。
顺便说一句:我建议你使用一个带有c++引用的,这样更安全。关于
正如许多人所回答的那样,有必要在myObject
的构造函数中将myThing
对象初始化为NULL
,而不是在父对象中。然后,if(!in)
和if(in == NULL)
都工作。
谢谢!
- std::vector::迭代器是否可以合法地作为指针
- 是否可以将llvm::FunctionType转换为C/C++原始函数指针
- 返回指向对象的指针的函数调用是否为 prvalue?
- 对象初始化中是否允许指向此成员的指针?
- 新分配指向函数的指针是否合法?
- 在函数结束后使用指向变量的指针是否安全?
- C++默认情况下,指针类型数组的元素是否保证初始化为 nullptr?
- 在对象指针上调用 Delete 是否会递归删除其动态分配的成员
- 如果整数与指针大小相同,则重新解释将整数转换为指针双射是否具有双射作用?
- 是否可以使用函数指针调用虚拟析构函数?
- std::less是否应该允许在编译时比较不相关的指针?
- 是否允许编译器省略对指针的 &* 运算符的组合调用?
- 将相同共享指针的副本存储在不同的向量中是否是一种好的做法?
- C++ 返回指向函数内定义的静态数组的指针是否有效?
- 检查输入 std::array 指针数据是否等于某个常量数组
- 成员访问是否在空指针上定义C++?
- 如果只有 std::auto_ptr 可用,我是否仍应该使用智能指针?
- 是否可以使用指针访问变量以避免直接编辑变量?
- 是否可以仅通过将分配的指针地址存储在C++中来分析内存?
- "this"指针的值在对象的生存期内是否恒定?