gpt4 book ai didi

c++ - 使用来自自身 C++ 的变量

转载 作者:行者123 更新时间:2023-11-30 01:18:37 24 4
gpt4 key购买 nike

我正在尝试创建一个创建“点”并计算它们之间距离的小类。我首先创建两个“点”对象,然后将第二个作为参数传递给包含在第一个点中的函数。这使我可以访问第二个点的坐标,但是我真的不知道我应该如何获得第一个点的坐标——第一个点接收第二个点作为参数。我认为它看起来像这样,但显然不是:

.h

class Punkt{ //"Punkt" = swedish for "dot"

private:
int x, y;

public:
//Konstruktor
Punkt(int firstX, int firstY): x(firstX), y(firstY){};

//Setters and getters
int getX(){return x;}

void setX(int newX){x = newX;}

int getY(){return y;}

void setY(int newY){y = newY;}

//Avstånd till annan punkt
double distance(Punkt annanPunkt);
};

.cpp

#include "punkt.h"
#include <cmath>

double distance(Punkt annanPunkt){ //"annanpunkt" = "other dot"
return sqrt(pow((annanPunkt.getX() - self.getX), 2) +
pow((annanPunkt.getY() - self.getY, 2))
}

最佳答案

首先,你已经将distance声明为一个成员函数,所以它的定义需要在Punkt范围内:

double Punkt::distance(Punkt annanPunkt){

其次,您可能不需要参数的拷贝。传递一个 const 引用:

double Punkt::distance(const Punkt& annanPunkt){

至于在函数中访问自己的数据成员,可以通过名称(xy)访问:

annanPunkt.getX() - x), 2) 

或者,this->xgetX()this->getX() 等。我发现使用 this 到处都太冗长了。

请注意,您需要将 getters const 设置为 const:

int getX() const {return x;}

或完全删除它们:如果您没有要维护的不变量,使用公共(public)数据成员可能是有意义的。

注意:我可能会将 distance 设为非成员函数:

double distance(const Punkt& a, const Punkt& b);

关于c++ - 使用来自自身 C++ 的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22458827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com