상황에 따라 작동하는 할당 연산자가있는 것 같습니다. 두 개의 float, x 및 y를 포함하는 Vector2 클래스가 있습니다. 여기 운영자 = 방법 : 엔티티위한 onMove 메소드 내C++ 연산자 = 오버로드가 선택적으로 작동합니다.
Vector2 Vector2::operator=(const Vector2 &right)
{
Vector2 result;
result.x = right.x;
result.y = right.y;
return result;
}
I가 가지고 speedFactor 프레임 레이트에 의존 posValid이 지점은 벽에 있는지 여부에 대한 체크이다
Vector2 newPosition = position + (speed * getSpeedFactor());
if (posValid(newPosition))
{
position.x = newPosition.x;
position.y = newPosition.y;
//position = newPosition;
}
또는 뭔가. 위치와 속도 또한 Vector2입니다. 첫 번째 과제 : 그러나
position = newPosition;
Vector2 newPosition = position + (speed * getSpeedFactor());
작품, 내가 예상/의도 된 동작을 얻을 그대로 코드는 그 자체 또는 전이나 후에 여부에는 영향을주지 않습니다. x & .y 과제. 아닌 반환 형식은 참조이며, 현재 객체에 대한 참조를 반환하는 : 당신의 operator=()
:
당신은 뭔가를해야합니다. 또한 'Vector2'를 반환해야합니다. 또한 객체에서 호출되기 때문에 임시 결과가 아니라 객체를 수정해야합니다. – chris
operator = 일반적으로 자신에 대한 참조를 반환해야합니다. –
이것을보십시오 : http://stackoverflow.com/questions/4421706/operator-overloading – chris