初めてのC++/CLI
最近、すっかり遠のいているC++ですが、今回は結構変わったのでちょっと弄ってみようと思います。
#include "stdafx.h" using namespace System; // ネイティブなクラス class NativeClass { std::string name; public: NativeClass(const std::string& name) { this->name = name; } void SayHello() { std::cout << "Hello " << name << std::endl; } }; // マネージドなクラス ref class ManagedClass { String^ name; public: ManagedClass(String^ name) { this->name = name; } void SayHello() { Console::WriteLine("Hello {0}", name); } }; int _tmain() { // ネイティブヒープに生成 NativeClass* pnc = new NativeClass("Native"); NativeClass& rnc = *pnc; rnc.SayHello(); // マネージドヒープに生成 ManagedClass^ rmc = gcnew ManagedClass("Managed"); rmc->SayHello(); // ネイティブなポインタはNULLで初期化 pnc = NULL; // マネージドな参照はnullptrで初期化 rmc = nullptr; Console::ReadLine(); } /* 結果 Hello Native Hello Managed*/
VS2003までのManaged C++は__gcとかあからさまにMS独自拡張っぽくてソースコードが汚くなって嫌だったのですが、C++/CLIではキーワードがスッキリしてちょっと使う気になります。ポテンシャル的にはネイティブもマネージドもいけるC++が一番なんですけどね(^^;