我正在尝试创建我自己的Vector2D类,类似于XNA的类,以存储坐标.按照此处的构造函数示例,我创建了下面的代码.但是,我得到一个错误,说没有与参数列表匹配的构造函数"Vector2D :: Vector2D"的实例.我不知道那是怎么回事......似乎是我的问题?
struct Vector2D {
Vector2D(int *varX, int *varY);
~Vector2D();
private: int *X, *Y;
};
Vector2D::Vector2D(int *varX, int *varY) {
X = varX;
Y = varY;
}
Vector2D::~Vector2D() {
free(X);
free(Y);
}
Run Code Online (Sandbox Code Playgroud)
您最有可能尝试创建这样的Vector2D类:
Vector2D vector(1, 2);
Run Code Online (Sandbox Code Playgroud)
您不能使用int像您在Vector2D构造函数定义中所做的那样使用指针,因为这些值不是指针,它们是整数常量.更改为这样的简单int对象:
struct Vector2D
{
Vector2D(int varX, int varY): X(varX), Y(varY) {} //initialization list
//~Vector2D(); delete the destructor since it's not needed anymore
int X, Y;
};
Run Code Online (Sandbox Code Playgroud)
由于数据对象不是指针,因此也不需要析构函数,因此在对象销毁时不需要额外清理堆上分配的内存.我刚刚评论过它,所以你可以看到它不再需要了.
最后,您可能不希望您的数据成员就像private使用结构一样...您可以这样做,但是您必须添加一些函数来访问这些数据成员(即,如果您声明它们private然后你不能做的事情vector.x = 5;).通常,class如果您要默认private访问,则使用a 作为struct默认public访问权限.
| 归档时间: |
|
| 查看次数: |
3135 次 |
| 最近记录: |