动态创建新结构
Creating new structs on the fly
我(非常)不熟悉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++中结构体和类之间的区别并不是那么大。为什么不给你的结构添加一个构造函数呢?
相关文章:
- 如何在C++类内存结构中创建"spacer"?
- 创建结构的数组时遇到分段错误
- 如何在 c++ 中创建结构向量的映射
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- CLang:在 std::thread 中运行函数会导致结构创建BAD_ACCESS
- C++为API中定义的结构创建超类
- C++ 使用数组结构创建平衡的二叉搜索树
- 使用匿名联合为结构创建空构造函数
- 正确的结构创建
- OPENDDS-从单个IDL结构创建多个主题
- 是否可以使用给定参数为结构创建推力的功能谓词?
- MFC文档/视图体系结构-创建没有初始视图的文档
- 在c++结构创建中更快地执行
- JNA -结构创建错误
- C++中模板结构创建之间的差异
- 无法推送到由静态映射<结构创建的队列,队列>
- 为类/结构创建多个对象
- 如何从模板结构创建二维数组
- 指向从另一个结构创建的数组的指针(不确定措辞是否正确)C++
- 使用结构创建数组