Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态创建新结构 我对C++非常(非常)陌生,并且我对结构有一些理解。我正在使用课程中的示例代码,因此: struct Point { int x; int y; }_C++ - Fatal编程技术网

动态创建新结构 我对C++非常(非常)陌生,并且我对结构有一些理解。我正在使用课程中的示例代码,因此: struct Point { int x; int y; }

动态创建新结构 我对C++非常(非常)陌生,并且我对结构有一些理解。我正在使用课程中的示例代码,因此: struct Point { int x; int y; },c++,C++,在另一段代码中,我想编写以下内容: drawLine(point1, new Point(x, y)); 这是行不通的,我知道我试图将结构声明为类,但有没有办法做到这一点?我目前编写了一个helper函数,它从x,y返回一个点,但这似乎是迂回的。new返回一个指针。如果为点定义合适的构造函数,则只需绘制线(点1,点(x,y))就可以了 (drawLine(point1,*(newpoint(x,y))也可以,但会导致内存泄漏;每个new都应该通过delete来平衡)问题不在于您试图将结构声明为

在另一段代码中,我想编写以下内容:

drawLine(point1, new Point(x, y));

这是行不通的,我知道我试图将结构声明为类,但有没有办法做到这一点?我目前编写了一个helper函数,它从x,y返回一个点,但这似乎是迂回的。

new
返回一个指针。如果为
点定义合适的构造函数,则只需
绘制线(点1,点(x,y))
就可以了


drawLine(point1,*(newpoint(x,y))
也可以,但会导致内存泄漏;每个
new
都应该通过
delete
来平衡)

问题不在于您试图将结构声明为类(实际上是类)

问题是,您试图从两个
整数
构造一个
,但没有合适的构造函数。以下是如何添加一个:

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

<> C++中结构和类的区别并不大。为什么不在结构中添加一个构造函数?

除非
drawLine()
拥有对象的所有权,否则就会出现内存泄漏。只需添加一个构造函数(与类一样使用结构)
Point(intpx,intpy):x(px),y(py){}
C++与C#或Java有根本的不同——您可以管理自己的内存。每当你说
new
,你都需要相应的
delete
。。。。但通常你可以说
drawLine(点1,点(x,y))。表达式
点(x,y)
是一个临时对象,其生存期结束于
。我想你可以用元组来实现,而在C++11中,你可以将结构初始化为
drawLine(点1,点{x,y})当我尝试这样做时,会得到一个非常模糊的“从“int”到“Point”之间不存在合适的构造函数”。具体地说,我正在尝试绘制线(point1,Point(x+1,y+2)),如果相关的话。@woopf:按照aix给出的定义构造函数。by“不是那么大”,我想您的意思是,结构的成员默认为public,而类的成员默认为private。重要的是要理解它们实际上是如何不同的,而不是仅仅意识到差异是最小的。更多的细节是。@Cody Gray重要的是要理解的是,除了一些容易覆盖的默认值之外,它们并没有真正的区别。
struct
仍然定义类类型,并且可以具有类类型的所有属性(私有成员、函数、甚至虚拟、构造函数、析构函数等)。关键字
struct
class
之间的选择纯粹是约定和编码准则之一。@James:我在哪里有不同的观点?@James,@Cody:我想说dontomaso的观点是,“即使它[只是]一个
struct
它仍然可以有一个构造函数,让 WOOPF知道C++结构不限于C类特征。差异的其他细节与这个具体问题无关。初始化结构的方法已经过时,不能用MSVC编译。@IngeHenriksen NPE的建议没有过时之处。您只需要在结构的最后一个括号末尾加一个分号,否则就可以了。