创建对象类型的变量 我一直在这个问题上,我似乎无法理解它,我正在创建一个C++程序,计算各种函数,如区域、周长、不同形状的点。p>

创建对象类型的变量 我一直在这个问题上,我似乎无法理解它,我正在创建一个C++程序,计算各种函数,如区域、周长、不同形状的点。p>,c++,visual-studio,C++,Visual Studio,其中一部分包括创建Point类型的leftTop变量(Point是一个只包含2个int(x和y)的类,以及一个名为Point的方法来打印不同形状的x和y)。我使用了一个模板来创建一个点类型的函数,它只返回x和y,我知道这是不正确的,但我想我还是会尝试一下 template <typename Point> Point leftTop(Point x, Point y) { return x, y; } 模板 点leftTop(点x,点y){ 返回x,y; } 但它需要是一

其中一部分包括创建Point类型的leftTop变量(Point是一个只包含2个int(x和y)的类,以及一个名为Point的方法来打印不同形状的x和y)。我使用了一个模板来创建一个点类型的函数,它只返回x和y,我知道这是不正确的,但我想我还是会尝试一下

template <typename Point>
Point leftTop(Point x, Point y) {
    return x, y;
}
模板
点leftTop(点x,点y){
返回x,y;
}

但它需要是一个点类型的数据成员(存储在一个名为shape的类中),用于存储形状左顶点的x和y坐标,我一直在研究如何实现它,因为我需要使用leftTop变量来计算形状的其他点,例如leftBottom、rightop、,等等。

使用模板函数会使事情变得过于复杂!确切的解决方案取决于您如何定义
类,但您可能只需要一个相关的构造函数:

类点
{
公众的
点(intpx,intpy):x{px},y{py}{
public://如果要阻止直接访问,请将这些设置为“私有”
int x;
int-y;
};
然后您可以非常轻松地创建
leftTop
对象:

int left=12;//或者别的什么
int top=17;
点leftTop(左,上);
您可以添加其他成员函数来完成您想做的任何事情


当您使用VisualStudio,因此可能有权访问MFC类时,您可以查看MFC如何实现其
CPoint
correct
类以获得指导。如果您无法查看MFC内容,那么
Windows.h
文件提供了名为
POINT
RECT
的C风格结构,这可能也很有用。

参数
x
y
不应该是
int
s吗?编写的return语句不会同时返回
x
y
,而
运算符返回其正确的操作数,因此您的返回操作与
返回y
基本相同。我相信你想做的是
返回{x,y}
x
y
更改为
int
s后。听起来像
top left
应该是
Shape
类的(可能是虚拟的)非模板成员函数。您还可以查看的设计及其。嘿,thomas,根据我的说明,它不能是一个成员函数,它必须是一个数据成员来存储形状左上角的x和y坐标,然后我还将使用它来计算形状的其他点,谢谢你的回复!我只是想问一个问题,如何才能打印出传递到leftTop参数中的变量,再次感谢您。@OpenSourcerer42有很多方法:您可以将
print
成员函数添加到使用
类,谢谢您的回复,我是否能够以某种方式打印leftTop对象,因为id还必须打印出稍后创建的rightTop对象,这将打印出x+宽度和y,thanks@OpenSourcerer42当然,这一切都可以做到,但这很可能是
Shape
类的“工作”——该类将
对象作为其成员:对于矩形,
左上
右下
成员就足够了,并且您可以拥有
形状(x,y,w,h)形式的构造函数
这将相应地设置这些成员。那太好了,谢谢你,我会在我回到家时实现这一点,并用结果更新线程!