Довольно плохо знаком с C ++, я следую промежуточным учебникам на 3DBuzz.com и пытаюсь поэкспериментировать с их задачами.
Текущий урок по классам: http://www.3dbuzz.com/vbforum/sv_showvideo.php?v=37
Я пытаюсь перегрузить & оператор <<, чтобы вывести мою 'Точку' в виде потока, когда я хочу. Соответствующая часть видео начинается с <strong>39: 00 .
Насколько я могу судить, мой код синтаксически идентичен (хотя я новичок, поэтому я, возможно, что-то упускаю), но я получаю ошибку:
1> c: \ users \ jack \ documents \ visual studio 2010 \ projects \ myfirstgame \ myfirstgame \ main.cpp (88): ошибка C2146: синтаксическая ошибка: отсутствует ';' перед идентификатором 'myPoint
Я понимаю, что объявляю экземпляр Point & myPoint в функции перегрузки оператора ... но я не знаю, где еще я мог бы это сделать, чтобы компилятор знал, что это ... если это имеет смысл.
Любая помощь приветствуется! Спасибо
#include <iostream>
#include <cmath>
using namespace std;
class Point
{
public:
Point(float f_x = 0.0, float f_y = 0.0, float f_z = 0.0);
~Point();
void SetXYZ(float X, float Y, float Z);
void SetX(float X);
void SetY(float Y);
void SetZ(float Z);
void GetXYZ(float &X, float &Y, float &Z);
float GetX();
float GetY();
float GetZ();
private:
float x, y, z;
protected:
};
Point::Point(float f_x, float f_y, float f_z)
{
cout << "Constructor with ARGUMENTS!" << endl;
x = f_x;
y = f_y;
z = f_z;
}
void Point::GetXYZ(float &X, float &Y, float &Z)
{
X = GetX();
Y = GetY();
Z = GetZ();
}
float Point::GetX()
{
return x;
}
float Point::GetY()
{
return y;
}
float Point::GetZ()
{
return z;
}
void Point::SetXYZ(float X,float Y, float Z)
{
SetX(X);
SetY(Y);
SetZ(Z);
}
void Point::SetX(float X)
{
x = X;
}
void Point::SetY(float Y)
{
y = Y;
}
void Point::SetZ(float Z)
{
z = Z;
}
Point::~Point()
{
cout << "We're in the destructor" << endl;
}
ostream &operator <<(ostream &stream, Point &myPoint)
{
stream << myPoint.GetX() << " " << myPoint.GetY() << " " myPoint.GetZ();
return stream;
}
void main()
{
float x, y, z; //Declaring floats for use in GetXYZ()
Point myLocation (1,2,-1); //Creating instance and using Point(...) function
cout << myLocation.GetX() << myLocation.GetY() << myLocation.GetZ() <<endl; // Getting xyz values and printing
myLocation.SetXYZ(2,3,-4); //Testing SetXYZ function
cout << myLocation.GetX() << myLocation.GetY() << myLocation.GetZ() <<endl; // Getting xyz values and printing
myLocation.GetXYZ(x, y, z);
cout << x << " " << y << " " << z << endl;
cout << myLocation;
system("PAUSE");
}
РЕДАКТИРОВАТЬ: Невероятный ответ! Люблю этот сайт уже. Спасибо всем, кто заметил это ^^