在C++中分配一般类为null
我在调整程序从C#到C ++时遇到了麻烦。给定课程将其分配为空值是非常令人讨厌的。但是C ++不接受等效形式“ nullptr”,
class Point{
public:
int x,y;
}
//...
Point p = nullptr;
有某种方法可以解决它吗?
I am having kind of a trouble adapting a program from C# to C++. It's very commom given a class to assign it the null value. But C++ is not accepting the equivalent form 'nullptr'
class Point{
public:
int x,y;
}
//...
Point p = nullptr;
There is some way of solving it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您不能将
nullptr
分配给类,因为类是一种类型而不是变量。通过键入点P = nullptr;
您正在做什么,因为您要编译器找到point
接受nullptr >。
您可以通过执行此操作来创建
point
作为自动变量的对象:或者简单地:
为此,您需要定义一个初始化
x
和<的构造函数代码> y ,因为您尚未为成员变量提供默认值。根据该语句居住的上下文,
p
将分配在堆或堆栈上。如果您在主函数中实例化p
,则将是后者。您可以通过执行此操作来创建指向
Point
对象的指针:但是,您只会创建一个指针。您将需要进一步照顾分配,您可以这样做:
在这种情况下,您还应在程序结束之前释放分配的内存:
You cannot assign
nullptr
to a class because a class is a type and not a variable. What you're doing by typingPoint p = nullptr;
is that you're asking the compiler to find a constructor ofPoint
which accepts anullptr
.You can either create an object of
Point
as an automatic variable by doing this:or simply like this:
for which however you will need to define a constructor which initializes
x
andy
because you haven't provided the member variables with default values.Depending on the context in which this statement resides,
p
will either be allocated on the heap or on the stack. In case you're instantiatingp
in the main function, it will be the latter.You can create a pointer to an object of
Point
by doing this:However, you will only have created a pointer. You will need to further take care of allocation, which you can do like this:
in which case you should also free the allocated memory before your program ends like so:
问题是
p
是您示例中的一种非分子类型。这意味着它不能用nullptr
初始化。p
的类型是点
。您可以制作
p
一个指向point
的指针,以便可以使用nullptr
初始化它,如下所示:或者
如果要创建一个类型的对象
point
然后这样做的一种方法是:我还建议参考a 良好的C ++书为了更好地理解该概念。
The problem is that
p
is a non-pointer type in your example. This means that it cannot be initialized with anullptr
. The type ofp
isPoint
.You can make
p
a pointer to aPoint
so that you can initialize it with anullptr
as shown below:Or
If you want to create an object of the class type
Point
then one way of doing so is as follows:I would also recommend referring to a good C++ book for a better understanding of the concept.