C ++ перегрузка оператора Typecast для указателей - PullRequest
2 голосов
/ 19 сентября 2010

У меня есть преобразование, подобное этому:

Class1 *p1;
Class2 *p2 = new Class2();
p1 = (Class1 *) p2;

Могу ли я переопределить приведенный выше оператор typecast для возврата пользовательского указателя объекта Class1? Если да, то как?

РЕДАКТИРОВАТЬ: Моя точная проблема в том, что у меня есть код, подобный этому:

if (*$1 == ArrayType(AnyType()))
{
    $$ = ((ArrayType *) $1)->getElementsType();
}

Оператор == перегружен, поэтому $ 1 может иметь тип AnyType *.

1 Ответ

5 голосов
/ 19 сентября 2010

Нет, вы не можете перегрузить операторы преобразования не-классов.

Какую проблему вы хотите решить? Возможно, вы захотите рассмотреть возможность предоставления операторов преобразования в реальных классах.

...