У меня есть преобразование, как это:C++ перегрузка оператора для приведения типов указателей
Class1 *p1;
Class2 *p2 = new Class2();
p1 = (Class1 *) p2;
Могу ли я переопределить оператор приведения типа выше, чтобы вернуть указатель на объект пользовательского Class1? Если да, то как?
EDIT: Моя точная проблема заключается в том, что у меня есть такой код:
if (*$1 == ArrayType(AnyType()))
{
$$ = ((ArrayType *) $1)->getElementsType();
}
Оператор == перегружен так $ 1 может быть типа AnyType *.
Это проект Bison/Flex. yylval должен быть указателем на класс, а не экземпляр его. Я определил класс Type с подклассами ArrayType и AnyType (который должен быть равен любому типу Type (sub)). Поэтому иногда у меня есть указатель на AnyType и должен создавать указатель ArrayType. –