- - PR -
C++のマネージ拡張について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-07-14 00:22
またまた質問します。
VC++のMFCクラスからManaged C++クラスを使用したいのです。 以下のコードを書いたのですがビルドが通りません。 (通らない箇所に*を付けてあります) どなたかご伝授下さい。 [Managed C++] ファイル名:Managed.h __gc class CManagedClass { public: CManagedClass(); ~CManagedClass(); public: void Test(); }; [UnManaged C++] ファイル名:UnManaged.cpp #include "./Managed.h" CUnManagedClass::CallManagedCode(void) { *CManagedClass* pObj = new CManagedClass; if (pObj) { pObj->Test(); } }; | ||||||||
|
投稿日時: 2005-07-14 05:27
*CManagedClass* pObj = new CManagedClass();
そういう問題ではなく? | ||||||||
|
投稿日時: 2005-07-14 07:28
ビルドが通らないなら、発生しているビルドエラーの内容ぐらい書く!
| ||||||||
|
投稿日時: 2005-07-14 07:34
すみません。
会社で投稿する時間がなかったので家で投稿したためエラーコードが分かりませんでした。 CManagedClass* pObj = new CManagedClass; でも CManagedClass* pObj = new CManagedClass(); と書いても コンパイラ エラー C3828 'object type' : マネージ クラスのインスタンスを作成時に配置引数を使用することはできません。 のエラーになります。 | ||||||||
|
投稿日時: 2005-07-14 11:14
エラーメッセージの通りです。 「C++」では、メンバ変数の宣言と初期化を一気に記述することは出来ません。 メンバ変数の初期化はクラスのコンストラクタか、コンストラクタの初期化リストで行いましょう。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://www.hidori.jp/ // Microsoft MVP for Visual C# [ メッセージ編集済み 編集者: 渋木宏明(ひどり) 編集日時 2005-07-14 11:15 ] | ||||||||
|
投稿日時: 2005-07-14 11:37
レスどうもありがとうございます。
次のようにメッセージハンドラで行っても同じです。 #include "stdafx.h" #include "TestME.h" #include "TestMEDlg.h" #include ".\managedclass.h" (--中略--) void CTestMEDlg:nBnClickedButtonManaged() { CManagedClass* pObj = new CManagedClass; } | ||||||||
|
投稿日時: 2005-07-14 12:02
本当に「同じ」ですか? 「違う」エラーメッセージが表示出ていませんか? _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||||||
|
投稿日時: 2005-07-14 12:24
渋木さん 何度もすみません。
CManagedClass* pObj = new CManagedClass(); でも CManagedClass* pObj = new CManagedClass; でも同じエラーコードになります。 |