【发布时间】:2016-12-05 12:52:45
【问题描述】:
对于一个项目,我正在尝试使用矢量函数创建一个矢量类。我正在尝试通过覆盖 += 加法分配来添加向量加法函数。因为我不希望 += 函数更改要添加的值,所以我想将该值作为 const reference 传递。
我的代码:
Vector2D.h
#pragma once
class Vector2D
{
private:
int m_x, m_y;
public:
Vector2D(int x, int y);
int getX();
int getY();
void setX(int x);
void setY(int y);
Vector2D& operator+=(const Vector2D&);
};
Vector2D.cpp
#include "Vector2D.h"
Vector2D::Vector2D(int x, int y)
{
m_x = x;
m_y = y;
}
int Vector2D::getX()
{
return m_x;
}
int Vector2D::getY()
{
return m_y;
}
void Vector2D::setX(int x)
{
m_x = x;
}
void Vector2D::setY(int y)
{
m_y = y;
}
Vector2D& Vector2D::operator+=(const Vector2D& toAdd)
{
m_x += toAdd.getX();
m_y += toAdd.getY();
return *this;
}
但我得到了错误:
对象具有与成员不兼容的类型限定符 函数“Vector2D::getX”
和
int Vector2D::getX(void)': 无法将 'this' 指针从 'const 转换 Vector2D' 到 'Vector2D &'
我尝试将返回 x 和 y 的函数链接到 const:
const int Vector2D::getX()
const int Vector2D::getY()
但这并不能解决错误。从参数中删除const 可解决所有错误并导致代码正常工作。
我应该如何更改我的代码以确保传递给 += 运算符的值不能被更改(例如通过在传递的对象上调用 setY(100))?
【问题讨论】: