その行を c# から c++/cli に変換したい
Idocobj is IPart
IPart はインターフェイスで、Idocobj はオブジェクトです。この変換を行う方法はありますか。
私はこのコードを使用しました:
Idocobj->GetType() == IPart::typeid
しかし、それは機能しません
その行を c# から c++/cli に変換したい
Idocobj is IPart
IPart はインターフェイスで、Idocobj はオブジェクトです。この変換を行う方法はありますか。
私はこのコードを使用しました:
Idocobj->GetType() == IPart::typeid
しかし、それは機能しません
dynamic_cast
「is」を確認するために使用できます。次に例を示します。
using namespace System;
namespace NS
{
public interface class IFoo
{
void Test();
};
public ref class Foo : public IFoo
{
public: virtual void Test() {}
};
public ref class Bar
{
public: virtual void Test() {}
};
}
template<class T, class U>
bool isinst(U u) {
return dynamic_cast< T >(u) != nullptr;
}
int main()
{
NS::Foo^ f = gcnew NS::Foo();
NS::Bar^ b = gcnew NS::Bar();
if (isinst<NS::IFoo^>(f))
Console::WriteLine("f is IFoo");
if (isinst<NS::IFoo^>(b) == false)
Console::WriteLine("f is not IFoo");
Console::ReadKey();
}
しかし、通常、「is」を使用することはありません...常にチェックで何かをしたいので、通常は「as」を使用して、直接マップしdynamic_cast
ます:
NS::IFoo^ ifoo = dynamic_cast<NS::IFoo^>(f);
if (ifoo != nullptr)
{
// Do something...
ifoo->Test();
}