我(非常)对C ++很陌生,并且在理解结构方面遇到了一些问题。我正在使用课程中的示例代码,所以我有:
struct Point {
int x;
int y;
}
在另一段代码中,我想写下以下内容:
drawLine(point1, new Point(x, y));
这不起作用,我知道我试图声明一个结构就好像它是一个类,但有没有办法做到这一点?我目前编写了一个辅助函数,它从x,y返回一个Point,但这看起来很迂回。
答案 0 :(得分:9)
问题不是你试图将结构声明为类(事实上,there's very little difference between the two in C++)。
问题是你试图从两个Point
构造一个ints
,并且没有合适的构造函数。以下是如何添加一个:
struct Point {
int x;
int y;
Point(int x, int y): x(x), y(y) {}
};
答案 1 :(得分:3)
new
返回一个指针。如果为drawLine(point1, Point(x,y))
定义适当的构造函数,则只需Point
即可。
(drawLine(point1, *(new Point(x,y)))
也可以,但会引入内存泄漏;每个new
应该由delete
平衡。)
答案 2 :(得分:0)
c ++中struct和class之间的区别并不大。为什么不在结构中添加构造函数?