なぜそれが私の望むように動作しないのか分かりませんが、私はインターネットを見ていますが、良い解決策はありませんでした。コピーコンストラクタが呼び出された理由、オブジェクトの参照のみを返すとき
Pointクラス:
class Point
{
public:
Point(const Point &) {
cout << "copy constructor was called" << endl;
}
Point(int x, int y) : x(x), y(y) {
}
void setX(int x) {this->x = x;}
void setY(int y) {this->y = y;}
int getX() const { return x; }
int getY() const { return y; }
private:
int x;
int y;
};
Circleクラス:
class Circle
{
private:
int rad;
Point &location;
public:
Circle(int radius, Point &location) : rad(radius), location(location) {}
int getRad() { return rad; }
Point & getLocation() { return location; }
};
使用:
int main() {
Point p(23, 23);
Circle c(12, p);
Point p1 = c.getLocation();
p1.setX(200);
cout << p.getX() << endl; // prints 23, which I want to be 200
// copy constructor was called
system("pause");
return 0;
}
:
溶液は、このような基準として
p1
を宣言することであろう。 – WhozCraig'Point&p1 = c.getLocation();' – xander
@WhozCraig hmmmmm .......私はC++を初めて使っています。どうもありがとうございました! –