C++/CLI カクテル・レシピ episthmh (゚Д゚)ウマー Microsoft MVP, Visual C++

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
はじめに C++、C++/CLI、C# の比較 生産性 拡張性 規模感 得意分野 3人がこう思う使いどころ まとめ.
プログラミング第5回 1 while ループ 文字列の操作
本プレゼンテーション ( 以下、本書 ) で提供されている情報は、本書が 発表された時点における Microsoft の見解を述べたものです。市場 ニーズの変化に対応する必要があるため、本書は記載された内容の実 現に関する Microsoft の確約とはみなされないものとします。また本 書に記載された情報の正確さについて、保証するものではありません。
オブジェクト指向プログラミング(4) 静的分析(2)
C++ むかしばなし episthmh わんくま同盟 Microsoft MVP for
独習Java ・ 10.6  Hashtableクラス ・ 10.7  String Tokenizerクラス  12月12日    小笠原 一恵.
アルゴリズムとデータ構造 2011年6月13日
JSFによるWebアプリケーション開発 第6回
C# の現在・過去・未来 えムナウ (児玉宏之)
インタラクティブ・ゲーム制作 <プログラミングコース>
第20章 Flyweight ~同じものを共有して無駄をなくす~
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
Bridge Pattern
プログラミングII 第 7 回 オブジェクトの配列 New, delete 参照 田向.
Microsoft Consumer Channels and Central Marketing Group
補足説明.
~手続き指向からオブジェクト指向へ[Ⅱ]~
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
MVP for VB が語る C# 入門 初音 玲.
MVP for VB が語る C# 入門 初音 玲.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
第8回 2007年6月15日 応用Java (Java/XML).
第3回 2007年4月27日 応用Java (Java/XML).
Windows PowerShell Cmdlet
C# の現在・過去・未来 えムナウ (児玉宏之)
アルゴリズムとデータ構造1 2009年6月29日
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
アルゴリズムとデータ構造1 2005年7月5日
Microsoft Consumer Channels and Central Marketing Group
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト・プログラミング 第8回.
TDD ってどんな感じ? FizzBuzz を作ってみる 2010/01/22 biac 1.
2013年度 プログラミングⅠ ~ はじめてのプログラミング ~.
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
EntityManager と EJB QL EJB 3.0 コース 第8回 2006年8月5日.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
Boostのスマートなポインタを使ってみる
C#プログラミング実習 第3回.
アルゴリズムとデータ構造 2012年6月11日
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
アルゴリズムとデータ構造1 2006年6月23日
nativeの基礎知識 「ポインタ」てなによ!?
ソフトウェア制作論 平成30年11月28日.
Action Method の実装 J2EE II 第9回 2004年12月2日.
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
cp-3. サブクラス,継承 (C++ オブジェクト指向プログラミング入門)
cp-2. 属性,アクセサ (C++ オブジェクト指向プログラミング入門)
cp-1. クラスとメソッド (C++ オブジェクト指向プログラミング入門)
How To WPF アプリケーション Part4 By 中博俊.
フレンド関数とフレンド演算子.
演算子のオーバーロード.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
JSFによるWebアプリケーション開発 第7回
値渡しと参照渡しについて.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
C++ むかしばなし episthmh わんくま同盟 Microsoft MVP for
C++ むかしばなし episthmh わんくま同盟 Microsoft MVP for
How To WPF アプリケーション Part3 By 中博俊.
Presentation transcript:

C++/CLI カクテル・レシピ episthmh (゚Д゚)ウマー Microsoft MVP, Visual C++ episteme@cppll.jp

Visual Basic / C# にはマネできんこと C++/CLI ってば… Cであり C++であり .NETである Visual Basic / C# にはマネできんこと やってやろうぜぃ!

(1.1) Native を Managed の中に混ぜるには class Native { … }; ref class Managed { Native* native; public: Managed() { native = new Native(); } ~Managed() { delete native; } … }; クラスの場合、ポインタに限る new/delete をお忘れなく auto_ptr<Native> 使用不可 インスタンスのコピー時に注意! 勝手に捨ててはくれません!

(1.2) Managed を Native の中に混ぜるには ref class Managed { … }; class Native { gcroot<Managed^> managed; public: Native() { managed = gcnew Managed(); } ~Native() { delete native; } … }; クラスの場合、ポインタに限る gcnew/delete をお忘れなく インスタンスのコピー時に注意! #include <vcclr.h> しませう! ※#include <msclr/auto_gcroot.h>   auto_gcroot<M^> → Managed版 auto_ptr

(2.1) System::String^ ⇔ std::wstring // String^ ← wstring String^ to_cli(const wstring& str) { return gcnew String(str.c_str()); } // wstring ← String^ wstring from_cli(String^ str) { pin_ptr<wchar_t> result =           &(str->ToCharArray()[0]); return result;

(2.2) System::String^ ⇔ std::string // String^ ← string String^ to_cli(const string& str) { return gcnew String(str.c_str()); } // string ← String^ string from_cli(String^ str) { void* ptr = Marshal::StringToHGlobalAnsi(str).ToPointer(); string result(static_cast<const char*>(ptr)); Marshal::FreeHGlobal(System::IntPtr(ptr)); return result; ( ゜Д゜)マンドクセー ※ System::Runtime::InteropServices::Marshal

View を C# , Model を C++/CLI で実装 C++ を NUnit でテストする でもんすとらしおん Native と Managed の混在 .Net を(ちょびっと)利用した C++ View を C# , Model を C++/CLI で実装 C++ を NUnit でテストする

Let’s enjoy OOPing!