Здравствуйте, hooky-mars, Вы писали:
_>>dynamic_cast?
HM>Не вот нашол http://msdn.microsoft.com/library/85af44e9
как не, если там сделано через dynamic_cast ?
Здравствуйте, hooky-mars, Вы писали:
HM>Всем привет!
HM>Есть ли в C++/CLI что-то наподобие оператора is в C#?
dynamic_cast
MSDN:
// dynamic_cast_clr.cpp
// compile with: /clr
using namespace System;
void PrintObjectType( Object^o ) {
if( dynamic_cast<String^>(o) )
Console::WriteLine("Object is a String");
else if( dynamic_cast<int^>(o) )
Console::WriteLine("Object is an int");
}
int main() {
Object^o1 = "hello";
Object^o2 = 10;
PrintObjectType(o1);
PrintObjectType(o2);
}
А разве if проверяет на nillptr? У меня с этим были проблемы. Приходилось явно указывать.
Здравствуйте, hooky-mars, Вы писали:
HM>А разве if проверяет на nillptr? У меня с этим были проблемы. Приходилось явно указывать.
Пример у меня компилится (msdn все-таки).
Кроме того, имеет место следующее (/clr):
#include <stdlib.h>
...
nullptr == (void*)0; // ок
nullptr == 0; // ошибка
nullptr == NULL; // ошибка
nullptr can be used anywhere a handle or a native pointer can be used.
кроме
nullptr is not a type and is not supported for use with:
sizeof
typeid
typeobj
throw nullptr (although throw (Object ^)nullptr; will work)