动态创建新结构

Creating new structs on the fly

本文关键字:结构 创建 新结构 动态      更新时间:2023-10-16

我(非常)不熟悉c++,并且在理解结构方面有一些问题。我使用的是课程中的示例代码,所以我有:

struct Point {
   int x;
   int y;
}
在另一段代码中,我想写如下代码:
drawLine(point1, new Point(x, y));

这不起作用,我理解我试图声明一个结构,如果它是一个类,但是有办法做到这一点吗?我目前写了一个辅助函数,从x,y返回一个点,但这似乎迂回。

问题不在于你试图像声明一个类一样声明一个结构体(事实上,在c++中这两者之间几乎没有什么区别)。

问题是你试图从两个ints构造一个Point,并且没有合适的构造函数。下面是如何添加一个:

struct Point {
   int x;
   int y;
   Point(int x, int y): x(x), y(y) {}
};

new返回一个指针。如果您为Point定义了适当的构造函数,那么drawLine(point1, Point(x,y))应该可以工作。

(drawLine(point1, *(new Point(x,y))))也可以工作,但会引入内存泄漏;每个new都应该有一个delete来平衡

c++中结构体和类之间的区别并不是那么大。为什么不给你的结构添加一个构造函数呢?