В настоящее время я пытаюсь обойти проблему с перегрузкой оператора и построил следующий код
// Круг. cpp
//Circle.cpp
#ifndef CIRCLE_H
#define CIRCLE_H
#include "IOD.cpp"
#include<string>
class IOD; //Forward declaration
class Circle
{
public:
void display(IOD& ioDevice) const
{
ioDevice<<*this;
}
};
#endif
// IOD. cpp
//IOD.cpp
#ifndef IOD_H
#define IOD_H
#include <iostream>
#include<string>
#include "Circle.cpp"
class Circle; //Forward declaration
class IOD
{
// Interface for displaying CAD objects
public:
void operator<<(const Circle& c)
{
std::cout << "Displaying the object Circle Using IODevice GraphicsScreen for circles";
}
};
#endif
// Source. cpp
//Source.cpp
#include <iostream>
#include "Circle.cpp"
#include "IOD.cpp"
int main()
{
Circle* c1 = new Circle();
IOD* d1 = new IOD();
c1->display(*d1);
}
Я пытаюсь использовать функцию отображения в Circle для вызова перегруженного оператора << в IOD для вывода вывода об объекте Circle в экран. Насколько я понимаю, использование ioDevice << * this "внутри функции отображения должно привести к желаемому результату. Но вместо этого я получаю следующую ошибку </p>
error C2676: binary '<<': 'IOD' does not define this operator or a conversion to a type acceptable to the predefined operator
Есть ли обходные пути к этому?