14/03/24 11:45:41.86 R2MpMn2O
デバッガ使えない環境なのかな、、、
例外起きた時は出力ウィンドウに出るぜ
823:デフォルトの名無しさん
14/04/26 12:11:13.54 J0aLOZMr
c#のdynamic型に相当するものを
c++/cliで何と書けば良いですか?
824:デフォルトの名無しさん
14/04/27 21:57:27.97 t/xZR1S/
多分無い
825:デフォルトの名無しさん
14/05/09 18:40:24.14 avbF2wuD
c++/cli勉強したいと思っています。
>>array<a^>^ array_a;
の<a^>^ってどいういう意味ですか?
顔文字に見えます。ググりたいのですが^>^でググっても
ヒットしません。キーワードを教えてけろ。
826:デフォルトの名無しさん
14/05/09 18:46:04.26 Mn4+ksrv
トラッキングハンドル
827:デフォルトの名無しさん
14/05/09 19:05:13.77 avbF2wuD
>>826
ありがとうございます。さっそくググってみます。
828:デフォルトの名無しさん
14/05/11 22:02:14.61 OFkZfhFe
参照型を内部に保持するコンテナの参照を宣言かな。
829:デフォルトの名無しさん
14/05/13 09:25:37.06 QKhoqLLT
ジェネリックメソッドの継承がうまく行きません。
generic<typename T> ref struct B;
ref struct A abstract {
generic<typename U> virtual A ^f(B<U> ^u) = 0;
};
//C4570 明示的に抽象として宣言せずに抽象関数を含んでいます
generic<typename T> ref struct B : A {
//C4490 オーバーライド指定子が不適切
generic<typename U> virtual A ^f(B<U> ^u) override {
return u;
}
};
同じ戻り値と引数でも、同じ関数だと認識されないようなのですが、どのようにすれば良いですか?
830:デフォルトの名無しさん
14/05/13 10:02:57.61 Kixx6i0Q
URLリンク(social.msdn.microsoft.com)
仕様っぽいのであきらめてC++/CLI投げ捨ててC#で書く
831:デフォルトの名無しさん
14/05/13 10:44:57.11 QKhoqLLT
なるほど・・・ありがとうございました。
832:デフォルトの名無しさん
14/05/13 23:30:42.34 OiuzuWyN
C#でdelegateに設定されたメソッドを調べるのにGetInvocationListを参照していたのですが、
C++/CLIで同じようなことをするとコンパイルエラーが発生してしまいます。
どのようにコーディングすればよいでしょうか?
// C#
URLリンク(ideone.com)
// C++/CLI
URLリンク(ideone.com)
※実際は23行目のauto mcd = (MulticastDelegate^)hoge->Piyo;で
error C3918: 使用するには、'Delegate::Hoge::Piyo' がデータ メンバーでなければなりません
といったエラーが発生してしまいます。
833:デフォルトの名無しさん
14/05/13 23:41:08.55 RH21G1qI
C++/CLIの方はeventじゃん
834:デフォルトの名無しさん
14/05/13 23:47:44.50 OiuzuWyN
>>833
あーeventキーワード取っ払ったら通りました。ありがとうございます。
そこでコンパイルエラーにしてくれたらいいのに…。
835:デフォルトの名無しさん
14/05/14 08:39:30.20 ICklhj5Y
event自体は正当で使う側が問題なのに、eventの方でコンパイルエラー言われても
836:デフォルトの名無しさん
14/05/14 11:14:20.64 k1JIQlQE
ワロタ
837:デフォルトの名無しさん
14/05/14 23:09:07.27 OfRhuTl1
すいません>>832です。
禿しく勘違いしてました。C#のeventはシンタックスシュガーなんですね。
event EventHandler^ Piyo
{
void add(EventHandler^ value) { mPiyo += value; }
void remove(EventHandler^ value) { mPiyo -= value; }
void raise(Object^ sender, EventArgs^ e) { mPiyo(sender, e); }
}
EventHandler^ mPiyo;
などとしたら上手くいきました。
838:デフォルトの名無しさん
14/05/26 03:20:04.74 l0k3Jdk0
c++/cli初めて作成しています。
c++プロジェクトでライブラリを作成して
void func1(const char *p){
cout << p << endl;
}
を定義して、
c++/cliプロジェクトでこの関数を呼び出すと、
func1("Hello World"); //呼び出し成功
func1("Hello" + "World"); //型 "System::String ^" の引数は型 "const char *" のパラメーターと互換性がありません
となったので、エラー解決のために少しググって、よくわからないまま
char* pStr = (char*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi("Hello" + "World").ToPointer();
のようにして、
func1(pStr); //呼び出し成功
しました。
この場合、
func1("Hello" + "World");
を実行可能に出来るようにc++ライブラリ側で、この引数を受けられるfunc1関数を定義することは可能でしょうか?
839:デフォルトの名無しさん
14/05/26 05:33:40.37 TbdBw+Sj
無理
840:デフォルトの名無しさん
14/05/26 09:14:28.60 l0k3Jdk0
>>839
そうですか無理ですか。
出来れば、出来ない理由を教えてください。
841:デフォルトの名無しさん
14/05/26 09:35:16.69 QBzBPwJ7
System::String^はネイティブでは直接扱えないから
842:デフォルトの名無しさん
14/05/26 09:42:14.96 l0k3Jdk0
>>841
なるほど。ありがとうございました。