Я пытаюсь конвертировать между двумя классами и избегать временного объекта.
Вот мое объявление для Square
:
class CSquare
{
public:
int dimension;
CSquare(int dimension);
// Conversion to Rectangle
operator CRectangle();
~CSquare(void);
};
, а вот мое объявление для Rectangle
:
class CRectangle
{
public:
int length;
int width;
CRectangle(int length, int width);
//Copy Constructor
CRectangle(const CRectangle& anotherRectangle);
~CRectangle(void);
};
Почему
CSquare aSquare = CSquare(10);
CRectangle convertedRect = (CRectangle) aSquare;
вызывает конструктор копирования?
У меня есть функция преобразования:
CSquare::operator CRectangle(){
return CRectangle(CSquare::dimension,CSquare::dimension);
}
но я 'я все еще получаю временный объект.
Как мне избежать временного объекта?