The following compiled in ideone: http://ideone.com/ratVVT
Changes are:
- Implementation of (overload) method must specify the Class name
- Implementation of (overload) method must have the same signature as the declaration (missing const).
- Declaring the variable vector in main
Vector2 vector();
was interpreted as a function declaration, instead of a Vector2 variable.... useVector2 vector;
orVector2 vector=Vector2()
The code copied below.
#include <iostream>
//vectors.h
class Vector2
{
public:
Vector2();
~Vector2();
int counter;
Vector2& operator+=(const Vector2& vec);
};
//vectors.cpp
//#include "vectors.h"
Vector2::Vector2()
{
counter = 0;
}
Vector2::~Vector2()
{
}
Vector2& Vector2::operator+=(const Vector2& vec)// <---- CHANGE
{
int new_n = counter + vec.counter;
counter = new_n;
return *this;//error: this may only be used in a non-static member function.
}
//main.cpp
#include <stdio.h>
//#include "vectors.h"
int main()
{
Vector2 vector; // <---- CHANGE
while(true)
{
vector += vector;
printf("Vector counter: %d\n",vector.counter);
}
}