프로젝트의 경우 벡터 함수를 사용하여 벡터 클래스를 만들려고합니다. + = 덧셈을 오버라이드하여 벡터 덧셈 함수를 추가하려고합니다. 왜냐하면 + = 함수가 더하기 값을 변경하여 그 값을 const reference
으로 전달하기를 원하지 않기 때문입니다. C++ override + = const 참조
:하지만 오류를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"
및
Vector2D :: getX (무효)가INT와 호환되지 않습니다 예선을 입력있다
'&을 Vector2D'에서 'CONST Vector2D'에서 I는 const
로 X와 Y를 반환 기능 체인 시도 :
const int Vector2D::getX()
const int Vector2D::getY()
하지만이 방법으로는 오류가 해결되지 않습니다. 매개 변수에서 const
을 제거하면 모든 오류와 작업 코드의 결과가 해결됩니다.
+ = 연산자에 전달 된 값을 변경할 수 없도록 코드를 변경해야합니까 (예 : 전달 된 객체에서 setY (100) 호출)?
나는 "나는 const로 x와 y를 반환하는 함수를 chan하려고 시도했다." –
@SvenB, 함수를 변경하지 않았으므로 반환 값을 변경했습니다. 'const' 키워드의 배치는 중요합니다. – StoryTeller
나는이 문제에 대한 완전한 묘사를하지 않았다고 생각한다. 내 목표는 변경 될 수없는 개체를 전달하는 것입니다 (예를 들어 setX (200) 호출). 또는 대답을 잘못 해석했습니다. –