C++ operator演算子の使い方

同じクラスや、構造体同士を計算する際、直接計算しようとすると起きるはずです。

main.cpp

  1. #include <iostream>
  2. #include "Vector2.h"
  3.  
  4. int main()
  5. {
  6.        Vector2 vec1 = { 10,10 };
  7.      Vector2 vec2 = { 10,10 };
  8.            vec1 += vec2;//C++ これらのオペランドと一致する演算子 はありません  
  9. }
Vector2.h
  1. class Vector2
  2. {
  3. public:
  4.     int x, y;
  5. };
 
このプログラムを、ビルドすると演算子がないといわれます。
 

解決法

ここで、operater演算子を使います。
operater演算子は、クラスや構造体の演算をする時に役に立ちます
const参照で中身がいじれないようにしましょう。
後、アドレスを渡すことで高速に処理してくれます。
 
(例)
Vector2 operator+=(const Vector2& vec)
{
        return { x + vec.x,y + vec.y };
}
 

main.cpp

  1. #include <iostream>
  2. #include "Vector2.h"
  3.  
  4. int main()
  5. {
  6.        Vector2 vec1 = { 10,10 };
  7.      Vector2 vec2 = { 10,10 };
  8.            vec1 += vec2;
  9. }
Vector2.h
  1. class Vector2
  2. {
  3. public:
  4.     int x, y;
  5.     Vector2 operator+=(const Vector2& vec);
  6. };
Vector2.cpp
  1. #include "Vector2.h"
  2.  
  3. Vector2 Vector2::operator+=(const Vector2& vec)
  4. {
  5.     return { x + vec.x,y + vec.y };
  6. }