おそらく、.NET開発でデファクトスタンダードに最も近いであろう
C++/CLIについて語ろうぜ!
このスレはC++および.NET Frameworkについて一定以上の知識を持っている人が対象となります。
.NETのクラスライブラリの使い方といった質問は Visual Studioスレにお願いします。
前スレッドはこちら
くだすれC++/CLI(初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1142144110/l1
dat落ち姉妹スレ
C++/CLI part3
http://pc12.2ch.net/test/read.cgi/tech/1206447234/l1
http://pc11.2ch.net/test/read.cgi/tech/1142147319/l1
http://pc8.2ch.net/test/read.cgi/tech/1126450441/l1
managed C++ やろうぜ!! 002
http://pc8.2ch.net/test/read.cgi/tech/1139043535/l1
探検
くだすれC++/CLI(初心者用)part2
■ このスレッドは過去ログ倉庫に格納されています
2010/03/15(月) 09:41:19
214デフォルトの名無しさん
2011/04/02(土) 17:27:27.97 質問です。
テキストファイルから設定を読み取り、動的にリンクを生成し、別プログラムを起動するランチャーを作っています。
動的にリンクは生成できますが、イベントハンドラに仕込むコールバック関数を動的には生成できないため、
1つのコールバック関数を呼び出しそのなかで起動するプログラムを判断せざるを得ないと考えました。
gcnew System::Windows::Forms::LinkLabelLinkClickedEventHandlerで登録される関数には、
呼び出し元のリンクが引数に渡されるので、cliext::mapで事前に、リンクとコマンドラインの組を格納して判断に用いよう
と考えました。が、リンクのハンドラ( System::Windows::Forms::Label^ )はoperator <が定義されておらず
ソートできないため使用できませんでした。
それではcliext::vectorに、リンクとコマンドラインのcliext::pairを格納しようと思いましたが、どうやらムリみたいです。
実際コンパイルエラーになりました。参考ウェブサイト:
ttp://blogs.wankuma.com/episteme/archive/2007/11/21/109646.aspx
ttp://d.hatena.ne.jp/crimsonwoods/20071130/1196384990
どうすれば、リンクとコマンドラインの型を管理できるでしょうか。
リンクの型(System::Windows::Forms::LinkLabel)を継承したクラスを定義し、
コマンドラインをメンバ変数として持たせるというのも考えましたがどうも無理やり過ぎる気がします。
何かよい方法はないでしょうか。
テキストファイルから設定を読み取り、動的にリンクを生成し、別プログラムを起動するランチャーを作っています。
動的にリンクは生成できますが、イベントハンドラに仕込むコールバック関数を動的には生成できないため、
1つのコールバック関数を呼び出しそのなかで起動するプログラムを判断せざるを得ないと考えました。
gcnew System::Windows::Forms::LinkLabelLinkClickedEventHandlerで登録される関数には、
呼び出し元のリンクが引数に渡されるので、cliext::mapで事前に、リンクとコマンドラインの組を格納して判断に用いよう
と考えました。が、リンクのハンドラ( System::Windows::Forms::Label^ )はoperator <が定義されておらず
ソートできないため使用できませんでした。
それではcliext::vectorに、リンクとコマンドラインのcliext::pairを格納しようと思いましたが、どうやらムリみたいです。
実際コンパイルエラーになりました。参考ウェブサイト:
ttp://blogs.wankuma.com/episteme/archive/2007/11/21/109646.aspx
ttp://d.hatena.ne.jp/crimsonwoods/20071130/1196384990
どうすれば、リンクとコマンドラインの型を管理できるでしょうか。
リンクの型(System::Windows::Forms::LinkLabel)を継承したクラスを定義し、
コマンドラインをメンバ変数として持たせるというのも考えましたがどうも無理やり過ぎる気がします。
何かよい方法はないでしょうか。
215デフォルトの名無しさん
2011/04/02(土) 17:39:23.59216デフォルトの名無しさん
2011/04/02(土) 17:45:48.60217デフォルトの名無しさん
2011/04/02(土) 17:58:52.75 やったらもう戻ってこないだろう
218デフォルトの名無しさん
2011/04/02(土) 18:01:20.52 コントロールのTagプロパティを使う手もあるけどね
C++/CLIはC++とC#を理解して
その上でもしも両方同時に必要になったときに橋渡しするために嫌々ちょっとだけ使う言語です
C++/CLIはC++とC#を理解して
その上でもしも両方同時に必要になったときに橋渡しするために嫌々ちょっとだけ使う言語です
219デフォルトの名無しさん
2011/04/02(土) 18:38:49.60220デフォルトの名無しさん
2011/04/03(日) 17:02:31.86 >>214
手元にあるvs2010では問題なく動いた
手元にあるvs2010では問題なく動いた
221デフォルトの名無しさん
2011/04/03(日) 18:14:41.51 CLIはすぐデザイナが壊れるし
IDEが自動でインデントをぐちゃぐちゃに破壊してくれるので
C++をラップするくらいにしか使わない
IDEが自動でインデントをぐちゃぐちゃに破壊してくれるので
C++をラップするくらいにしか使わない
222デフォルトの名無しさん
2011/04/03(日) 19:08:09.39 VSの次のバージョンではC++/CLIのWinFormsデザイナは削除したほうがいいと思う
>>219のようなかわいそうな人を生むだけで害悪しかない
>>219のようなかわいそうな人を生むだけで害悪しかない
223デフォルトの名無しさん
2011/04/03(日) 21:53:39.15 C++もかわいそう
別に「統合」してくれと頼んだわけでもないのに
へんな統合開発環境の下で働かされてる
別に「統合」してくれと頼んだわけでもないのに
へんな統合開発環境の下で働かされてる
224デフォルトの名無しさん
2011/04/10(日) 21:32:31.72 繰り返しの多い処理をするとメモリオーバーになってしまいます
どのようにメモリを解放するのですか?
どのようにメモリを解放するのですか?
225デフォルトの名無しさん
2011/04/10(日) 21:42:17.88 再現するソース出して
226デフォルトの名無しさん
2011/04/10(日) 21:49:49.30 こういうこと?
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/021gc/gc.html
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/021gc/gc.html
227デフォルトの名無しさん
2011/04/22(金) 05:33:09.44 C++/CLIのコードをビルドしたアセンブリにアンマネージコードが
含まれてないかチェックする方法って知ってますか?
なぜこういうことを聞くかというとこのクラスライブラリをマネージコードから
使う必要が出てきたためです。
含まれてないかチェックする方法って知ってますか?
なぜこういうことを聞くかというとこのクラスライブラリをマネージコードから
使う必要が出てきたためです。
228デフォルトの名無しさん
2011/04/22(金) 10:25:23.73 /clr:pure
229デフォルトの名無しさん
2011/04/22(金) 11:04:57.59 それで分かればいいよねぇ
230デフォルトの名無しさん
2011/04/22(金) 11:11:26.93 意味がわからん
混在アセンブリはマネージコードから使えるけど
セキュリティとか移植性とかでマネージコードしか使えないケースなんだとしたら
まず間違いなく/clr:pureではダメで/clr:safeでないといけない
でも/clr:safeなんて世の中にあるC++/CLIのコードのほとんどがコンパイルできないよw
混在アセンブリはマネージコードから使えるけど
セキュリティとか移植性とかでマネージコードしか使えないケースなんだとしたら
まず間違いなく/clr:pureではダメで/clr:safeでないといけない
でも/clr:safeなんて世の中にあるC++/CLIのコードのほとんどがコンパイルできないよw
231227
2011/04/23(土) 09:53:36.44 >>228-230
レスありがとう
> 混在アセンブリはマネージコードから使えるけど
> セキュリティとか移植性とかでマネージコードしか使えないケースなんだとしたら
> まず間違いなく/clr:pureではダメで/clr:safeでないといけない
説明不足でした
とにかくC++/CLIのコードのすべてのパブリックなクラスとメンバに
マネージコードからアクセスできるようにしたいんです
アンマネージコードが含まれてるとそれができないんじゃないかと思って質問しました
レスありがとう
> 混在アセンブリはマネージコードから使えるけど
> セキュリティとか移植性とかでマネージコードしか使えないケースなんだとしたら
> まず間違いなく/clr:pureではダメで/clr:safeでないといけない
説明不足でした
とにかくC++/CLIのコードのすべてのパブリックなクラスとメンバに
マネージコードからアクセスできるようにしたいんです
アンマネージコードが含まれてるとそれができないんじゃないかと思って質問しました
232デフォルトの名無しさん
2011/04/23(土) 11:45:11.72 アンマネージコードは含まれててもいい
というかそのためのC++/CLI
というかそのためのC++/CLI
233デフォルトの名無しさん
2011/04/23(土) 12:23:54.63 何を持って出来ないと思ったかがポイントかな。
とりあえず動くコードを張っとこう。
VS2010だとこのままで動くし、
VS2005-2008の場合はmanifestをちょこちょこいじる必要がある。
// cl /LD /O1 /clr test1s.cpp
#include <iostream>
class baz { public: void say() { std::cout << "Hello BAZ" << std::endl; }};
public ref class Foo { public: void Say() { std::cout << "Hello FOO" << std::endl; baz b; b.say(); }};
ref class Bar { public: void Say() { std::cout << "Hello BAR" << std::endl; baz b; b.say(); }};
// csc /o /r:test1s.dll test1.cs
using System;
class Program {
static void Main() {
new Foo().Say();
// new Bar().Say();// internalは呼び出せない。
}
}
とりあえず動くコードを張っとこう。
VS2010だとこのままで動くし、
VS2005-2008の場合はmanifestをちょこちょこいじる必要がある。
// cl /LD /O1 /clr test1s.cpp
#include <iostream>
class baz { public: void say() { std::cout << "Hello BAZ" << std::endl; }};
public ref class Foo { public: void Say() { std::cout << "Hello FOO" << std::endl; baz b; b.say(); }};
ref class Bar { public: void Say() { std::cout << "Hello BAR" << std::endl; baz b; b.say(); }};
// csc /o /r:test1s.dll test1.cs
using System;
class Program {
static void Main() {
new Foo().Say();
// new Bar().Say();// internalは呼び出せない。
}
}
234デフォルトの名無しさん
2011/04/23(土) 12:31:41.38 clrをマネージだけで使うとかかなりマゾい人だな
235デフォルトの名無しさん
2011/04/23(土) 14:15:04.04 そんな有り得ないというか無意味な使い方を想定するのは不毛だし
C++/CLIみたら混在しているものと見なせばいいよ
C++/CLIみたら混在しているものと見なせばいいよ
236227
2011/04/23(土) 18:24:35.15 >>232-235
レスありがとう
アンマネージが含まれてもマネージから呼び出せるということだけど
C++/CLIのソースコードで画像処理とかやってて、
例えばビットマップの構造体をnewして先頭からのバイト数でアクセスするとか、
その情報を渡してWin32APIを呼ぶとかしまくってるんだけど、
これってアンマネージにコンパイルされるよね。
こんなメソッドをC#から呼んでまともに動作するんだろうかって心配なんです。
レスありがとう
アンマネージが含まれてもマネージから呼び出せるということだけど
C++/CLIのソースコードで画像処理とかやってて、
例えばビットマップの構造体をnewして先頭からのバイト数でアクセスするとか、
その情報を渡してWin32APIを呼ぶとかしまくってるんだけど、
これってアンマネージにコンパイルされるよね。
こんなメソッドをC#から呼んでまともに動作するんだろうかって心配なんです。
237デフォルトの名無しさん
2011/04/23(土) 19:13:47.90 やっぱり、Managed Unmanagedの意味を取り違えてたか。
その程度ならManagedでコンパイルされてるよ。ただしunsafeだけどね。
その程度ならManagedでコンパイルされてるよ。ただしunsafeだけどね。
238227
2011/04/24(日) 11:33:12.50239デフォルトの名無しさん
2011/04/24(日) 19:03:40.58 文字列を逆順にするプログラムを書こうとした場合、自分で考えると以下のようになりました。
---------------------------
#include <string>
string str = "abcde"
string new_str;
int i;
int length = str.size();
for (i=0; i<length; ++i) {
new_str[i] = str[length-i-1];
}
---------------------------
なにかかカッコ悪い感じがするのですが、
一番スマートな書き方はどのような感じになりますでしょうか?
PHPのarray_popみたいのがあったらwhileで回して綺麗にかけると思うのですが、
C++のstringライブラリにありましたでしょうか?
あと、C++では i++は++iの方がよいと誰かに教わったのですが、理由を忘れてしまいました。
何故でしたでしょうか・・?
ご教示いただけますと幸いです。
---------------------------
#include <string>
string str = "abcde"
string new_str;
int i;
int length = str.size();
for (i=0; i<length; ++i) {
new_str[i] = str[length-i-1];
}
---------------------------
なにかかカッコ悪い感じがするのですが、
一番スマートな書き方はどのような感じになりますでしょうか?
PHPのarray_popみたいのがあったらwhileで回して綺麗にかけると思うのですが、
C++のstringライブラリにありましたでしょうか?
あと、C++では i++は++iの方がよいと誰かに教わったのですが、理由を忘れてしまいました。
何故でしたでしょうか・・?
ご教示いただけますと幸いです。
240デフォルトの名無しさん
2011/04/24(日) 19:23:40.94 スレ違い
241239
2011/04/24(日) 19:27:37.31 すみません
242デフォルトの名無しさん
2011/04/24(日) 19:43:51.75 このスレ的にはこういう回答になる(笑
// cl /FUSystem.Core.dll /clr:safe test2.cpp
using namespace System;
using namespace System::Linq;
int main(array<String^>^ args) {
String^ str = "abcde";
String^ new_str = gcnew String(Enumerable::ToArray(Enumerable::Reverse(str)));
Console::WriteLine(new_str);
}
拡張メソッドは使えなかったっけ?ちとスマートじゃないな。
// cl /FUSystem.Core.dll /clr:safe test2.cpp
using namespace System;
using namespace System::Linq;
int main(array<String^>^ args) {
String^ str = "abcde";
String^ new_str = gcnew String(Enumerable::ToArray(Enumerable::Reverse(str)));
Console::WriteLine(new_str);
}
拡張メソッドは使えなかったっけ?ちとスマートじゃないな。
243デフォルトの名無しさん
2011/04/24(日) 20:55:50.28 WCHAR [32]' から 'System::Object ^' に変換できません
というエラーがでた場合、どういう変換処理をかいたらいいんでしょうか??
というエラーがでた場合、どういう変換処理をかいたらいいんでしょうか??
244デフォルトの名無しさん
2011/04/24(日) 21:08:28.84 System::Object^ v_obj = gcnew System::String(v_wchar);
245デフォルトの名無しさん
2011/04/24(日) 22:09:06.50 たぶんこれかな
msclr::interop::marshal_as
msclr::interop::marshal_as
246デフォルトの名無しさん
2011/04/24(日) 22:36:22.37 >244
ありがとうございました。その逆の変換はどうするんでしょうか?
ありがとうございました。その逆の変換はどうするんでしょうか?
247デフォルトの名無しさん
2011/04/24(日) 23:47:43.19 >>242
今時サロゲートペアすら考えないコーディングは絶滅すべき
今時サロゲートペアすら考えないコーディングは絶滅すべき
248デフォルトの名無しさん
2011/04/25(月) 04:59:47.67249デフォルトの名無しさん
2011/04/27(水) 16:00:21.03 >>247
サロゲートペア対応に挑戦しようと思うのだが、VS2010expressのコンパイラでエラーになる。
なんかスマートな対応方法ないすか?
literal String^ str = L"「叱る」と「\uD842\uDF9Fる」";
error C3850: '\uD842': ユニバーサル文字名が無効な文字を指定しています。
error C3850: '\uDF9F': ユニバーサル文字名が無効な文字を指定しています。
サロゲートペア対応に挑戦しようと思うのだが、VS2010expressのコンパイラでエラーになる。
なんかスマートな対応方法ないすか?
literal String^ str = L"「叱る」と「\uD842\uDF9Fる」";
error C3850: '\uD842': ユニバーサル文字名が無効な文字を指定しています。
error C3850: '\uDF9F': ユニバーサル文字名が無効な文字を指定しています。
250デフォルトの名無しさん
2011/04/27(水) 21:36:58.89 >>249
ググると𠮟るのユニコードは「20B9F」となってるけど。
ググると𠮟るのユニコードは「20B9F」となってるけど。
251デフォルトの名無しさん
2011/04/27(水) 21:40:24.11 textBoxに入力した文字を分割して配列に割り当てる方法がわかりません
252デフォルトの名無しさん
2011/04/27(水) 22:11:33.08 C# 文字列 分割 でググれ
C#だぞ。C++/CLIじゃないぞ。
C#だぞ。C++/CLIじゃないぞ。
253デフォルトの名無しさん
2011/04/27(水) 23:46:28.19 >>249
\uxxxxじゃなくて\UxxxxxxxxでUTF-32使って指定するとか?
\uxxxxじゃなくて\UxxxxxxxxでUTF-32使って指定するとか?
254249
2011/04/29(金) 10:49:09.60 >>250,253
CLRは内部コードが16bitのユニコードなのでこうなちゃうんですね。
C#はこれでいけるのですけどね;;
const string msg = "「叱る」と「\uD842\uDF9Fる」";
とりあえず、これで対応しました。
array<wchar_t>^ cmsg = { L'「', L'叱', L'る', L'」', L'と', L'「', 0xD842, 0xDF9F, L'る', L'」' };
String^ msg = gcnew String(cmsg);
サロゲート対応のコードを書いてみました。
http://ideone.com/rXbuf
CLRは内部コードが16bitのユニコードなのでこうなちゃうんですね。
C#はこれでいけるのですけどね;;
const string msg = "「叱る」と「\uD842\uDF9Fる」";
とりあえず、これで対応しました。
array<wchar_t>^ cmsg = { L'「', L'叱', L'る', L'」', L'と', L'「', 0xD842, 0xDF9F, L'る', L'」' };
String^ msg = gcnew String(cmsg);
サロゲート対応のコードを書いてみました。
http://ideone.com/rXbuf
255デフォルトの名無しさん
2011/04/29(金) 11:04:15.35 string.Concat(
StringInfo.GetTextElementEnumerator(s)
.Cast<string>()
.Reverse()
.ToArray()
)
でええやん(めんどくさいからC#)
StringInfo.GetTextElementEnumerator(s)
.Cast<string>()
.Reverse()
.ToArray()
)
でええやん(めんどくさいからC#)
256デフォルトの名無しさん
2011/04/29(金) 12:57:21.31 サロゲートと聞くと松田聖子を思い出す
257デフォルトの名無しさん
2011/04/29(金) 13:17:08.71 .GetTextElementEnumeratorの戻値はIEnumerableじゃくて
IEnumertorだから直接Linqにつなげない。
IEnumertorだから直接Linqにつなげない。
258デフォルトの名無しさん
2011/04/30(土) 13:14:38.20 文字をシフトJISに変換する方法
259デフォルトの名無しさん
2011/04/30(土) 13:32:03.61 一行で様々な疑問を出させる才能
260デフォルトの名無しさん
2011/05/14(土) 13:44:13.14 C++/CLIの具体的な難点ってなんでしょうか?
少し触ってみたところ、GUIも作り易い感じがするしCライブラリも簡単に使えそうだし、
いったいどういう問題があるのかなと気になりました
(VC++2008EEなのでintellisenseもとりあえず大丈夫です)
少し触ってみたところ、GUIも作り易い感じがするしCライブラリも簡単に使えそうだし、
いったいどういう問題があるのかなと気になりました
(VC++2008EEなのでintellisenseもとりあえず大丈夫です)
261デフォルトの名無しさん
2011/05/14(土) 21:00:19.76 C#やVBと比較して生産性が遥かに劣る
それだけ
それだけ
262デフォルトの名無しさん
2011/05/14(土) 21:23:06.33 >>261
できればもうちょっと具体的にお願いします
できればもうちょっと具体的にお願いします
263デフォルトの名無しさん
2011/05/14(土) 21:55:07.50 ・C++言語ではなくではなくてC++/CLI言語であること、
C++/CLI独特の文法を覚える必要がある。C#との互換性もない。
・使う人が少ないので情報が少ない
・Intelisenceの不具合が多い(例え2010でも逃れられない)
・中途半端にネイティブなのでCLRとしての最適化も中途半端。
C++/CLI独特の文法を覚える必要がある。C#との互換性もない。
・使う人が少ないので情報が少ない
・Intelisenceの不具合が多い(例え2010でも逃れられない)
・中途半端にネイティブなのでCLRとしての最適化も中途半端。
264デフォルトの名無しさん
2011/05/14(土) 22:05:31.03 Cのライブラリ使うにしても、DllImportの手間を差し引いてもよっぽどでなきゃC#の方が楽なんだよね
265260
2011/05/15(日) 19:08:05.61 どうもありがとうございます
Visual C#を試しに入れてみたところ、
何だこれは…ひょっとしてC++/CLIだけでなくVisual C++自体が手抜き…?と思ってしまいました
これだとたしかに生産性に差が出るかもと思うと同時にMSの露骨な贔屓に少し閉口してしまいました
まだほんの入口ですしCライブラリについて不安はありますが、とりあえず使ってみようと思います
Visual C#を試しに入れてみたところ、
何だこれは…ひょっとしてC++/CLIだけでなくVisual C++自体が手抜き…?と思ってしまいました
これだとたしかに生産性に差が出るかもと思うと同時にMSの露骨な贔屓に少し閉口してしまいました
まだほんの入口ですしCライブラリについて不安はありますが、とりあえず使ってみようと思います
266デフォルトの名無しさん
2011/05/15(日) 23:25:23.90 VC++はネイティブC++の開発環境としては現在最高だろ
言語そのものがインテリセンスやRADに向いてない
C++にはC++にしかできないことをやらせるとMSは言ってるので
フォームデザイナを使うような用途へのサポートが強化されるようなことは今後も期待できない
C++はネイティブ特化、C++/CLIは橋渡し専用
言語そのものがインテリセンスやRADに向いてない
C++にはC++にしかできないことをやらせるとMSは言ってるので
フォームデザイナを使うような用途へのサポートが強化されるようなことは今後も期待できない
C++はネイティブ特化、C++/CLIは橋渡し専用
267デフォルトの名無しさん
2011/05/16(月) 00:10:28.27 まだVS2010のC++/CLIのインテリセンスないのか
この分だともうずっと出ないだろうな
この分だともうずっと出ないだろうな
268デフォルトの名無しさん
2011/05/16(月) 09:33:24.32 2010で外されたってことは、MSは諦めたってことなじゃないの?
269デフォルトの名無しさん
2011/05/16(月) 10:32:51.80 いや、次のバージョンでは復活させるって言ってる。
問題は「次」というのがSP2なのかVS2014とかになるのかが分からないこと。
問題は「次」というのがSP2なのかVS2014とかになるのかが分からないこと。
270デフォルトの名無しさん
2011/05/16(月) 10:37:08.05 その前にC++/CLI自体が…
今やMSにとってはATLでCOM触るラッパーを書くためだけの言語だからなあ
今やMSにとってはATLでCOM触るラッパーを書くためだけの言語だからなあ
271デフォルトの名無しさん
2011/05/24(火) 01:29:53.63 /*********************************/
/* __finallyブロックは何のために */
/*********************************/
try {
throw 128;
} catch (int num1) {
System::Console::WriteLine("catchブロック: num1 == {0}", num1);
} __finally {
System::Console::WriteLine("__finallyブロックって何の意味があるのか疑問だな");
}
System::Console::WriteLine("__finallyブロックがなくても、throwの有無にかかわらずここで実行できるじゃないか。");
/* __finallyブロックは何のために */
/*********************************/
try {
throw 128;
} catch (int num1) {
System::Console::WriteLine("catchブロック: num1 == {0}", num1);
} __finally {
System::Console::WriteLine("__finallyブロックって何の意味があるのか疑問だな");
}
System::Console::WriteLine("__finallyブロックがなくても、throwの有無にかかわらずここで実行できるじゃないか。");
272デフォルトの名無しさん
2011/05/24(火) 21:38:05.21 だがその処理の呼び出し元でcatchしたかった時はどうする?
C++なら自分で再throwする必要があるが、
finallyを使えばそういうことを考える必要がない。
ついでに言うと、finallyブロックは
例外が起きようとも起きなかろうとも、
breakやreturnで抜けても必ず実行されるので
ファイルの閉じ忘れなどを回避する実に有効な手段である。
C++なら自分で再throwする必要があるが、
finallyを使えばそういうことを考える必要がない。
ついでに言うと、finallyブロックは
例外が起きようとも起きなかろうとも、
breakやreturnで抜けても必ず実行されるので
ファイルの閉じ忘れなどを回避する実に有効な手段である。
273デフォルトの名無しさん
2011/05/24(火) 23:17:43.72 スタック割当構文じゃだめなの。
274デフォルトの名無しさん
2011/05/25(水) 23:31:46.12 >>273
だいたいそれで間に合うとは思う。
auto_handleやauto_gcrootの助けもあるしな。
まあ、今までのVisual C++にも__finallyあるし、C#にもfinallyあるし、
あえてC++/CLIに__finallyを搭載しない理由もないと言ったところでは?
だいたいそれで間に合うとは思う。
auto_handleやauto_gcrootの助けもあるしな。
まあ、今までのVisual C++にも__finallyあるし、C#にもfinallyあるし、
あえてC++/CLIに__finallyを搭載しない理由もないと言ったところでは?
275デフォルトの名無しさん
2011/05/26(木) 01:03:44.37 使ったオブジェクトのデストラクタ呼ぶだけでいいケースは確かに多いけどそうじゃないときもあるだろ
その場限りのちょっとした後処理のためにもいちいちクラス作るの?
その場限りのちょっとした後処理のためにもいちいちクラス作るの?
276デフォルトの名無しさん
2011/05/26(木) 05:07:03.51 超初心者です。
教えてほしいのですが、
hoge(int *piyo)は
hoge(int^ piyo)と
してるのですが
hoge(int **piyo)は
どのように書き換えれば良いのでしょうか
すいませんが教えてください
教えてほしいのですが、
hoge(int *piyo)は
hoge(int^ piyo)と
してるのですが
hoge(int **piyo)は
どのように書き換えれば良いのでしょうか
すいませんが教えてください
277デフォルトの名無しさん
2011/05/26(木) 12:12:03.85 array<int^>^ piyo とか?
278デフォルトの名無しさん
2011/05/26(木) 20:22:59.15 /* Hashtableのポインターへのポインターがコンパイルエラー */
using namespace System;
using namespace Collections;
const char *pc1;
const int nmax = 4;
// const char * の任意の要素数のデータを動的にメモリを割り当てて使う
const char **ppc1 = new const char *[nmax];
int n1 = 0;
*(ppc1 + n1++) = "higasi";
*(ppc1 + n1++) = "nisi";
*(ppc1 + n1++) = "minami";
*(ppc1 + n1++) = "kita";
for (n1 = 0; n1 < nmax; ++n1) {
pc1 = *(ppc1 + n1);
Console::WriteLine(gcnew String(pc1));
}
// 同様の手段で、Hashtable ^^ にメモリを動的に割り当てて任意の数
// のHashtable ^ を格納しようとするとコンパイルエラー
ArrayList ^pArrayList1 = gcnew ArrayList();
for (n1 = 0; n1 < nmax; ++n1) {
pArrayList1->Add(gcnew Hashtable());
}
Hashtable ^pHashtable1, ^pHashtable2;
Hashtable ^^ppHashtable1 = gcnew Hashtable ^[nmax]; // コンパイルエラー
ppHashtable1 = gcnew Hashtable ^[nmax];
for (n1 = 0; n1 < nmax; ++n1) {
pHashtable1 = dynamic_cast<Hashtable ^>(pArrayList1[n1]);
// ^(ppHashtable1 + n1) = pHashtable1; // コンパイルエラー
// pHashtable2 = ^(ppHashtable1 + n1); // コンパイルエラー
pHashtable1 = pHashtable2 = nullptr;
}
using namespace System;
using namespace Collections;
const char *pc1;
const int nmax = 4;
// const char * の任意の要素数のデータを動的にメモリを割り当てて使う
const char **ppc1 = new const char *[nmax];
int n1 = 0;
*(ppc1 + n1++) = "higasi";
*(ppc1 + n1++) = "nisi";
*(ppc1 + n1++) = "minami";
*(ppc1 + n1++) = "kita";
for (n1 = 0; n1 < nmax; ++n1) {
pc1 = *(ppc1 + n1);
Console::WriteLine(gcnew String(pc1));
}
// 同様の手段で、Hashtable ^^ にメモリを動的に割り当てて任意の数
// のHashtable ^ を格納しようとするとコンパイルエラー
ArrayList ^pArrayList1 = gcnew ArrayList();
for (n1 = 0; n1 < nmax; ++n1) {
pArrayList1->Add(gcnew Hashtable());
}
Hashtable ^pHashtable1, ^pHashtable2;
Hashtable ^^ppHashtable1 = gcnew Hashtable ^[nmax]; // コンパイルエラー
ppHashtable1 = gcnew Hashtable ^[nmax];
for (n1 = 0; n1 < nmax; ++n1) {
pHashtable1 = dynamic_cast<Hashtable ^>(pArrayList1[n1]);
// ^(ppHashtable1 + n1) = pHashtable1; // コンパイルエラー
// pHashtable2 = ^(ppHashtable1 + n1); // コンパイルエラー
pHashtable1 = pHashtable2 = nullptr;
}
279デフォルトの名無しさん
2011/05/26(木) 20:26:26.71 このコンパイルエラーになる
System::Collections::Hashtable ^^ppHashtable1;
って何とかならんかいな。多重ループで毎回dynamic_cast演算子使ってる
と効率悪いだろうし。
System::Collections::Hashtable ^^ppHashtable1;
って何とかならんかいな。多重ループで毎回dynamic_cast演算子使ってる
と効率悪いだろうし。
280デフォルトの名無しさん
2011/05/26(木) 20:45:23.45 delete [] ppc1; を忘れとった。
それと、ppHashtable1 = gcnew Hashtable ^[nmax];
の行も 「// コンパイルエラー」を忘れ取った。
それと、ppHashtable1 = gcnew Hashtable ^[nmax];
の行も 「// コンパイルエラー」を忘れ取った。
281デフォルトの名無しさん
2011/05/27(金) 01:02:41.42 なんていうか、C++ のことは忘れた方が良いよ
282デフォルトの名無しさん
2011/05/27(金) 03:30:26.71 /* cli::array を使ってもコンパイルエラーかいな、難しいもんだな */
cli::array<Hashtable^> ^ppHashtable1 = gcnew cli::array<Hashtable ^>[nmax];
IEnumerator ^pIEnumerator1;
pArrayList1->GetEnumerator();
while (pIEnumerator1->MoveNext()) {
pHashtable1 = dynamic_cast<Hashtable ^>(pArrayList1[n1]);
^(ppHashtable1 + n1) = pHashtable1;
pHashtable2 = ^(ppHashtable1 + n1);
pHashtable1 = pHashtable2 = nullptr;
}
pIEnumerator1 = nullptr;
cli::array<Hashtable^> ^ppHashtable1 = gcnew cli::array<Hashtable ^>[nmax];
IEnumerator ^pIEnumerator1;
pArrayList1->GetEnumerator();
while (pIEnumerator1->MoveNext()) {
pHashtable1 = dynamic_cast<Hashtable ^>(pArrayList1[n1]);
^(ppHashtable1 + n1) = pHashtable1;
pHashtable2 = ^(ppHashtable1 + n1);
pHashtable1 = pHashtable2 = nullptr;
}
pIEnumerator1 = nullptr;
283デフォルトの名無しさん
2011/05/27(金) 03:33:53.23 間違えた
pHashtable1 = dynamic_cast<Hashtable ^>(pArrayList1[n1]);
の行は間違いで正しくは
pHashtable1 = dynamic_cast<Hashtable ^>(pIEnumerator1->Current);
だった。
pHashtable1 = dynamic_cast<Hashtable ^>(pArrayList1[n1]);
の行は間違いで正しくは
pHashtable1 = dynamic_cast<Hashtable ^>(pIEnumerator1->Current);
だった。
284デフォルトの名無しさん
2011/05/27(金) 04:48:38.33 using namespace System;
using namespace Collections;
typedef Hashtable^ pHashtable;
pHashtable pHashtable1 = gcnew Hashtable();
pHashtable pHashtable2 = gcnew Hashtable();
pHashtable pHashtable3 = gcnew Hashtable();
pHashtable *ppHashtable1;
ppHashtable1 = &pHashtable1; // 可能
ppHashtable1 = nullptr;
// ppHashtable1 = new pHashtable; // コンパイルエラー
// delete ppHashtable1;
// ppHashtable1 = nullptr;
// const int nmax = 3;
// ppHashtable1 = new pHashtable[nmax];
// delete [] ppHashtable1;
new演算子が使えないならSTLのvectorなら何とかなるんだろうか。
でも、.NET Framework 2.0 SDKをダウンロードしたものでは標準ライブラリの
ヘッダーファイルを#includeできないからアンマネージは使えない。
using namespace Collections;
typedef Hashtable^ pHashtable;
pHashtable pHashtable1 = gcnew Hashtable();
pHashtable pHashtable2 = gcnew Hashtable();
pHashtable pHashtable3 = gcnew Hashtable();
pHashtable *ppHashtable1;
ppHashtable1 = &pHashtable1; // 可能
ppHashtable1 = nullptr;
// ppHashtable1 = new pHashtable; // コンパイルエラー
// delete ppHashtable1;
// ppHashtable1 = nullptr;
// const int nmax = 3;
// ppHashtable1 = new pHashtable[nmax];
// delete [] ppHashtable1;
new演算子が使えないならSTLのvectorなら何とかなるんだろうか。
でも、.NET Framework 2.0 SDKをダウンロードしたものでは標準ライブラリの
ヘッダーファイルを#includeできないからアンマネージは使えない。
285276
2011/05/27(金) 05:15:05.02 中途半端な質問をしてすいませんでした。
>>277さんレスありがとうございました。
実はDirectXのBaseClassesをCLIで書いてるのですが
GetSyncSource( [Out]IReferenceClock** pClock) ;
(IReferenceClockはmanagedインターフェイスです)
の部分をどう書けば良いかわからないです。
interior_ptrというのを使えと出てきますが、使い方がよくわかりません。
どう書けば良いか、どなたかご教示ください。
>>277さんレスありがとうございました。
実はDirectXのBaseClassesをCLIで書いてるのですが
GetSyncSource( [Out]IReferenceClock** pClock) ;
(IReferenceClockはmanagedインターフェイスです)
の部分をどう書けば良いかわからないです。
interior_ptrというのを使えと出てきますが、使い方がよくわかりません。
どう書けば良いか、どなたかご教示ください。
286デフォルトの名無しさん
2011/05/27(金) 05:52:09.46 静的配列も作成できないのか。これもエラーになるのか。
typedef System::Collections::Hashtable ^pHashtable;
pHashtable pHashtable_hairetu[8];
マネージなクラスというのはどうしようもないな、困ったもんだ。
typedef System::Collections::Hashtable ^pHashtable;
pHashtable pHashtable_hairetu[8];
マネージなクラスというのはどうしようもないな、困ったもんだ。
287デフォルトの名無しさん
2011/05/27(金) 06:13:49.43 これもエラーになるのか。
やっぱりArrayListのままで甘んじるしかないようだな。
typedef System::Collections::Hashtable ^pHashtable;
pHashtable *pHashtable1 = new pHashtable();
char *pc1 = reinterpret_cast<char *>(&pHashtable1);
pc1 = reinterpret_cast<char *>(&pHashtable1);
pHashtable pHashtable2 = *(reinterpret_cast<pHashtable *>(pc1));
CLIってぼろいな。
やっぱりArrayListのままで甘んじるしかないようだな。
typedef System::Collections::Hashtable ^pHashtable;
pHashtable *pHashtable1 = new pHashtable();
char *pc1 = reinterpret_cast<char *>(&pHashtable1);
pc1 = reinterpret_cast<char *>(&pHashtable1);
pHashtable pHashtable2 = *(reinterpret_cast<pHashtable *>(pc1));
CLIってぼろいな。
288デフォルトの名無しさん
2011/05/27(金) 23:37:00.98 マネージドクラスをネイティブクラスでラップしてから配列に入れるとか・・
C++/CLIは異なる言語が同居する2世代住宅言語だからなぁ。
#include <msclr/auto_gcroot.h>
using namespace msclr;
using namespace System;
ref struct Foo {
void Say() { Console::WriteLine("Hello World !"); }
};
struct Bar {
auto_gcroot<Foo^> foo;
Bar() : foo(gcnew Foo()) {}
};
int main(array<String^>^ args) {
Bar bs[] = { Bar(), Bar(), Bar() };
for (int i=0; i<3; i++) bs[i].foo->Say();
}
C++/CLIは異なる言語が同居する2世代住宅言語だからなぁ。
#include <msclr/auto_gcroot.h>
using namespace msclr;
using namespace System;
ref struct Foo {
void Say() { Console::WriteLine("Hello World !"); }
};
struct Bar {
auto_gcroot<Foo^> foo;
Bar() : foo(gcnew Foo()) {}
};
int main(array<String^>^ args) {
Bar bs[] = { Bar(), Bar(), Bar() };
for (int i=0; i<3; i++) bs[i].foo->Say();
}
289デフォルトの名無しさん
2011/05/28(土) 06:57:48.67 もうちょっと改良
#include <msclr/auto_gcroot.h>
using namespace msclr;
using namespace System;
ref struct Foo {
void Say() { Console::WriteLine("Hello World !"); }
Foo() { Console::WriteLine("Foo Created"); }
~Foo() { Console::WriteLine("Foo Deleted"); }
};
typedef auto_gcroot<Foo^> foo;
int main(array<String^>^ args) {
foo ag[] = { gcnew Foo(), gcnew Foo(), gcnew Foo() };
for (int i=0; i<3; i++) ag[i]->Say();
}
#include <msclr/auto_gcroot.h>
using namespace msclr;
using namespace System;
ref struct Foo {
void Say() { Console::WriteLine("Hello World !"); }
Foo() { Console::WriteLine("Foo Created"); }
~Foo() { Console::WriteLine("Foo Deleted"); }
};
typedef auto_gcroot<Foo^> foo;
int main(array<String^>^ args) {
foo ag[] = { gcnew Foo(), gcnew Foo(), gcnew Foo() };
for (int i=0; i<3; i++) ag[i]->Say();
}
290276
2011/05/28(土) 08:14:55.34 すいませんが再度質問さしていただきます
C++で
class Foo{
--色々なメソッドやメンバ--
}
である別のクラスのメソッドで
void Piyo(Foo **hoge);というのがあり
渡す値がFoo* fooとして
Piyo(&foo);とするとします。
これをCLIで実現するにはどのようにすればよいでしょうか
どなたかご教示ください。
C++で
class Foo{
--色々なメソッドやメンバ--
}
である別のクラスのメソッドで
void Piyo(Foo **hoge);というのがあり
渡す値がFoo* fooとして
Piyo(&foo);とするとします。
これをCLIで実現するにはどのようにすればよいでしょうか
どなたかご教示ください。
291デフォルトの名無しさん
2011/05/29(日) 00:06:15.74 質問の意図が良く分からないけど、こんな感じの回答でいい?
using namespace System;
ref class Foo {};
void Piyo(Foo^ %hoge) {
hoge = gcnew Foo();
}
int main(){
Foo^ f = nullptr;
Piyo(f);
Console::WriteLine(f);
Foo f2;
Piyo(%f2);
Console::WriteLine(%f2);
}
using namespace System;
ref class Foo {};
void Piyo(Foo^ %hoge) {
hoge = gcnew Foo();
}
int main(){
Foo^ f = nullptr;
Piyo(f);
Console::WriteLine(f);
Foo f2;
Piyo(%f2);
Console::WriteLine(%f2);
}
292デフォルトの名無しさん
2011/05/30(月) 12:26:48.80 .NET的には単にreturnで返すのが普通
どうしても参照渡しでやりたいなら
void Piyo([System::Runtime::InteropServices::OutAttribute]Foo^ %hoge)
こう書くのが.NET的には正解
クラスライブラリ作ってるんでなければ好きにすればいいけど
どうしても参照渡しでやりたいなら
void Piyo([System::Runtime::InteropServices::OutAttribute]Foo^ %hoge)
こう書くのが.NET的には正解
クラスライブラリ作ってるんでなければ好きにすればいいけど
293276
2011/06/01(水) 06:53:05.38 ありがとうございました。
たいへん参考になりました。
たいへん参考になりました。
294デフォルトの名無しさん
2011/06/01(水) 07:08:44.99 教えてほしいんですが。
C,C++なら
typedef union
{
int a;
short b;
double d;
}Union;
としたらUnionのサイズはsizeof(double)で
Union u = 1;としたら、aに1が入ると思うんですが。
CLIで
[StructLayout(LayoutKind::Explicit)]
ref struct Union
{
[FieldOffset(?)]int a;
[FieldOffset(?)]short b;
[FieldOffset(?)]double d;
};
と宣言したとして、?の部分には何の数値を入れればよいのでしょうか。
ヘルプを見ると「フィールドの物理的な位置を示します。」
と書かれているのですが、馬鹿なんでわかりません。
どなたか教えてください。
C,C++なら
typedef union
{
int a;
short b;
double d;
}Union;
としたらUnionのサイズはsizeof(double)で
Union u = 1;としたら、aに1が入ると思うんですが。
CLIで
[StructLayout(LayoutKind::Explicit)]
ref struct Union
{
[FieldOffset(?)]int a;
[FieldOffset(?)]short b;
[FieldOffset(?)]double d;
};
と宣言したとして、?の部分には何の数値を入れればよいのでしょうか。
ヘルプを見ると「フィールドの物理的な位置を示します。」
と書かれているのですが、馬鹿なんでわかりません。
どなたか教えてください。
295デフォルトの名無しさん
2011/06/01(水) 21:57:49.20 C++/CLIにおけるジェネリックメソッドとテンプレート関数の違いを説明してくださいお願いします
296デフォルトの名無しさん
2011/06/03(金) 21:20:40.48297デフォルトの名無しさん
2011/06/04(土) 14:38:11.46 DirextXXinputのXInputGetState関数実行の格納先構造体
struct CONTROLER_STATE
{
XINPUT_STATE lastState;
XINPUT_STATE state;
DWORD dwResult;
bool bLockVibration;
XINPUT_VIBRATION vibration;
};
をC#で受け取れるようにするにはどうすればいいんですか?
ラップというのはどういう流れになるんですか?C++/CLIの本2冊読んだんですが解説コードからちょっとでも違うと全くわからないです
今のところの認識は、
structをそのままrefクラスに入れる>エラー大量
structの前にrefをつける>エラー大量
structから一つ一つ値を完全にC++/CLIで作った構造体に抜き出し、その構造体をC#から読み込む>これなら当然できる
ラップするとはどういうことなんでしょうか
struct CONTROLER_STATE
{
XINPUT_STATE lastState;
XINPUT_STATE state;
DWORD dwResult;
bool bLockVibration;
XINPUT_VIBRATION vibration;
};
をC#で受け取れるようにするにはどうすればいいんですか?
ラップというのはどういう流れになるんですか?C++/CLIの本2冊読んだんですが解説コードからちょっとでも違うと全くわからないです
今のところの認識は、
structをそのままrefクラスに入れる>エラー大量
structの前にrefをつける>エラー大量
structから一つ一つ値を完全にC++/CLIで作った構造体に抜き出し、その構造体をC#から読み込む>これなら当然できる
ラップするとはどういうことなんでしょうか
298デフォルトの名無しさん
2011/06/04(土) 15:04:33.10 本二冊読んでvalue classが出てこないってありえるのか…?
299デフォルトの名無しさん
2011/06/04(土) 15:58:05.32 どういうことですか?structの前にvalueをつけたら混合型はサポートされていませんというエラーがでます
300デフォルトの名無しさん
2011/06/04(土) 17:21:15.05 そりゃ、ref や value をつけたら C++/CLI の管理だからな
通常の C++ のポインタとか持ってちゃ、混合型になるだろ
通常の C++ のポインタとか持ってちゃ、混合型になるだろ
301デフォルトの名無しさん
2011/06/04(土) 17:47:19.16302デフォルトの名無しさん
2011/06/04(土) 18:50:06.15 まじですか・・・
何かものすごい事を期待していました・・・
何かものすごい事を期待していました・・・
303デフォルトの名無しさん
2011/06/04(土) 19:05:39.17 ってC++CLI使わなくても直接C#からXinput呼べるんですか?
どうやるんですか?
どうやるんですか?
304デフォルトの名無しさん
2011/06/04(土) 19:19:52.39 PInvoke で渡す構造体はC#側で用意してあげればいい
305デフォルトの名無しさん
2011/06/04(土) 20:30:56.92 ありがとうございます
意味が全く分かりませんがPInvokeを調べてみます
意味が全く分かりませんがPInvokeを調べてみます
306デフォルトの名無しさん
2011/06/04(土) 20:31:25.24 XInputだったらXNA使えよ
308294
2011/06/07(火) 07:00:08.28 再度質問さしていただきます
struct Hoge
{
union
{
DWORD dwGBitMask;
DWORD dwUBitMask;
DWORD dwZBitMask;
DWORD dwBumpDvBitMask;
struct
{
WORD wFlipMSTypes;
WORD wBltMSTypes;
} MultiSampleCaps;
};
を
ref struct Hoge
{
[StructLayout(LayoutKind::Explicit)]
ref struct Union
{
[FieldOffset(0)]DWORD dwGBitMask;
[FieldOffset(0)]DWORD dwUBitMask;
[FieldOffset(0)]DWORD dwZBitMask;
[FieldOffset(0)]DWORD dwBumpDvBitMask;
とまでしたのですが、
struct MultiSampleCaps
{
WORD wFlipMSTypes;
WORD wBltMSTypes;
}
の部分はどのように書けば良いのでしょうか、すいませんが教えてください。
struct Hoge
{
union
{
DWORD dwGBitMask;
DWORD dwUBitMask;
DWORD dwZBitMask;
DWORD dwBumpDvBitMask;
struct
{
WORD wFlipMSTypes;
WORD wBltMSTypes;
} MultiSampleCaps;
};
を
ref struct Hoge
{
[StructLayout(LayoutKind::Explicit)]
ref struct Union
{
[FieldOffset(0)]DWORD dwGBitMask;
[FieldOffset(0)]DWORD dwUBitMask;
[FieldOffset(0)]DWORD dwZBitMask;
[FieldOffset(0)]DWORD dwBumpDvBitMask;
とまでしたのですが、
struct MultiSampleCaps
{
WORD wFlipMSTypes;
WORD wBltMSTypes;
}
の部分はどのように書けば良いのでしょうか、すいませんが教えてください。
309デフォルトの名無しさん
2011/06/07(火) 13:08:48.20 C++/CLIでわざわざマネージ型をP/Invokeに使う意味がわからん。
しかもよりによってなぜ今時DirectDrawなのか。
[StructLayout(LayoutKind::Sequential)]struct MultiSampleCaps { ここは同じでオフセットも不要 }
/*Hogeの中*/[FieldOffset(4)]MultiSampleCaps MultiSampleCaps;
.NET関連で調べ物するときのキーワードはC++/CLIじゃなくてC#ね。
情報量1000倍だから。アホらしいと思ったらC#へどうぞ。
しかもよりによってなぜ今時DirectDrawなのか。
[StructLayout(LayoutKind::Sequential)]struct MultiSampleCaps { ここは同じでオフセットも不要 }
/*Hogeの中*/[FieldOffset(4)]MultiSampleCaps MultiSampleCaps;
.NET関連で調べ物するときのキーワードはC++/CLIじゃなくてC#ね。
情報量1000倍だから。アホらしいと思ったらC#へどうぞ。
310デフォルトの名無しさん
2011/06/08(水) 20:55:56.86 VC++6.0のMFCなプログラムとVC++2008 Express Edition の.NETなプログラムで
プロセス間通信したいのですがどうすればいいですか。
プロセス間通信したいのですがどうすればいいですか。
311デフォルトの名無しさん
2011/06/08(水) 22:03:55.29 WM_COPYDATAとか手軽でいいんじゃないか
312デフォルトの名無しさん
2011/06/08(水) 22:35:11.37 もしくは共有メモリ。DDEでも動くぜ。
313デフォルトの名無しさん
2011/06/22(水) 01:29:30.29 Graphicsをつかって1ドット書きたいのですが方法在りますか?
g->DarwLineだと2ドット最小?
g->DarwLineだと2ドット最小?
314デフォルトの名無しさん
2011/06/22(水) 06:08:56.94 FillRectangle
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 地震 [Hitzeschleier★]
- 【地震】 茨城 栃木 埼玉 千葉 震度4 [KingFisherは魚じゃないよ★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 【話題】好きな鍋は?! 「寄せ鍋」「キムチ鍋」「水炊き」「もつ鍋」「豆乳鍋」「ちゃんこ鍋」「ごま坦々鍋」「トマト鍋」 [ひぃぃ★]
- 【食】「シャウエッセンは焼くべからず」暗黙のルールを破り売上高過去最高…日本ハム社員たちが「夜味」にかけた情熱 [ぐれ★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★6 [Hitzeschleier★]
- 【悲報】日本人男性「GeminiでチャHしてたらGoogleアカウントBANされた。向こうが誘ってきたのに」 [519411371]
- ( ´ん`)地震…? [399583221]
- 自民党、金融所得課税30%で決定か。株を売ったり、配当金が入ると国が30%持って行きます [838847604]
- 🖐( -᷄ὢ)俺には>>2の>>3を自由に扱える権利がある……
- ほんこん さん「尖閣諸島も竹島も北方領土も、全て日本の領土だ!」 [201193242]
- 地震
