[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/29 13:41 / Filesize : 252 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.47【環境依存OK】



1 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 15:14:51 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.46【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1198755167/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

752 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:29:52 ]
pointer string zero-terminated

753 名前:749 mailto:sage [2008/02/01(金) 19:30:06 ]
間違えました。

754 名前:デフォルトの名無しさん [2008/02/01(金) 19:31:13 ]
>>751-752
なるほど・・ゼロでしたか
謎がとけました、ありがとうございます!

755 名前:デフォルトの名無しさん [2008/02/01(金) 21:29:40 ]
c++のプログラムを書いてます。
コンソールからstringを入力させたいのですが、getline()とcinを併用すると
何回目かのcinがユーザの入力待ちにならずにそのまま長さゼロの入力を受け取った
と誤解して処理が先に進んでしまうようです。何かフラッシュとかの処理が必要なので
しょうか?

756 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:01:29 ]
エラーが発生したなら
cin.clear(); するまで関数に失敗するが、
そういうわけではなくて?

757 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:13:42 ]
Pointer to a String terminated by Zero

758 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:38:32 ]
std::map<CString, CComPtr<ID3DXFont>> fonts;
に問題はありますか?

759 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:39:47 ]
エラーが出なければ問題は無い。
エラーが出るなら問題。

760 名前:デフォルトの名無しさん [2008/02/02(土) 01:41:21 ]
質問させてください.
c言語でscanfで入力を受けるプログラムをつくりました.
バッチファイルとかシェルスクリプトで入力してやりたいのですが、つまづいています.
要するに、
(実行ファイル)enter(入力)enter
では無く、
(実行ファイル)(入力)enter
のような感じに書く方法がありますか?ということです.




761 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:46:08 ]
int argc, char* argv[]
でググれ。

762 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:48:35 ]
>>760
そのレベルは……ぐぐるとかじゃなくて、本を読んできちんとした知識を身に付けた方が良いよ。
いや、マジで……

763 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:54:08 ]
>>758
STLのこんてなにオートポインタの類入れると

764 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:59:29 ]
とりあえず>>だとコンパイルエラーになったりするので> >にしとけ。

765 名前:デフォルトの名無しさん [2008/02/02(土) 02:37:31 ]
760です.確かに知識は無いです.
実は数値計算だったので簡単に済ませたかったんです.
リダイレクトでパラメータをいれる代わりに、
そのまま数値を書く方法があるのかなと思って質問してみたんですが.

どうやら場違いでした.

766 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 03:34:39 ]
ウィンドウつくったり図を表示したりするのってWin32API勉強しないとできない?

767 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 03:49:03 ]
>763
std::aut_ptrが例外的にダメなオートポインタで、
大抵のスマートポインタは入れても大丈夫じゃねーの。

768 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:09:24 ]
VC6 だが、std::vector に CComPtr 入れると
resize でアサーションエラーが出た。

769 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:31:21 ]
intrasive_ptr?だっけ?
まさにCOMみたいに自前でカウントしてるクラス用のスマポ

770 名前:デフォルトの名無しさん [2008/02/02(土) 12:46:10 ]
string型の変数の中身をlistコンテナに一文字ずつ移そうとしてます。
for_each(string.begin(), string.end(), XXXX);
みたいにfor_eachを使って書けないでしょうか?




771 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:49:16 ]
push_backとmem_fun_ptr

772 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:50:12 ]
mem_fun_refだったorz

773 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:03:58 ]
これはだめ?
std::list<char> l;
std::copy(string.begin(), string.end(), std::back_inserter(l));

774 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:48:54 ]
std::list<char> l(s.begin(), s.end());
または
l.assign(s.begin(), s.end());
だろ。

775 名前:デフォルトの名無しさん [2008/02/02(土) 15:35:03 ]
for_each(s.begin(), s.end(), mem_fun_ref(v.push_back));
ということですか?
でもこれはコンパイルできなかった。

776 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:06:20 ]
>>775
>>773は正しい処理だが、
効率が悪いということじゃないの?

初期化の話だよな?

>>775
そりゃ、あらゆる点で無理だ。

777 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:16:22 ]
v.push_backではなくて&std::list<char>::push_backだろ
まあstd::back_inserterを使うのが最適なわけだが

778 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:18:57 ]
最適は774だって。 EffectiveSTL嫁。

779 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:20:27 ]
元の質問は for_each が使いたいらしいから、 >777 でも間違いではない。

780 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:51:44 ]
>>777
それでもダメ。引数の数が一致しない。
せめてbind1stを使えといいたいところだが
ほとんどの実装でunary_functionで参照の参照が
発生してはじかれる。




781 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:55:14 ]
>>778
範囲指定のイテレータか

782 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:07:39 ]
ぶっちゃけ、メンバ関数をforeachみたいな連中に渡すのは
面倒くさいのでboost使おう、という話になるw

783 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:11:23 ]
だからfor_each使わずに>>774でいいって。

784 名前:784 [2008/02/02(土) 19:38:53 ]
質問です。

//正規分布を求めるメソッド
float BestFitInfo::norDis(float x, float mean, float var){

return 1 / ( sqrt( 2 * 3.14 ) * sqrt(var) ) *

exp( - (x - mean) * ( x - mean ) / ( 2 * var ) );
}

//BestFitInfoというクラスを作って、
//正規分布を求めるメソッドを書いたところ、

warning C4244: 'return' : 'double' から 'float' への変換です。データが失われる可能性があります。

と言われました。すべて引数は float だし、
exp や sqrt の戻り値もそれに合わせて float のはずなので、
どこで double 型が発生しているのかわかりません。

なぜこのようなエラーとなっているのでしょうか?
分かる方がいらっしゃいましたら教えてください。
よろしくお願いします。

785 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 19:45:47 ]
>>784
>exp や sqrt の戻り値もそれに合わせて float のはずなので、
本当か?
floatのはsqrtfとかexpfじゃないのか?
あと、3.14はdouble型だ。float型リテラルは3.14fと書く。

786 名前:784 [2008/02/02(土) 19:59:47 ]
785さん、お返事ありがとうございます。

3.14fと書いたら「データが失われる可能性があります」と言われなくなりました。

sqrtについて調べたところ、

double sqrt(
double x
);
float sqrt(
float x
); // C++ only
long double sqrt(
long double x
); // C++ only
float sqrtf(
float x
);

このように sqrt は多重定義されているようです。
sqrtf はC言語のときの名残のようですね。

解決しました。みなさまありがとうございました。

787 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:11:07 ]
質問です
僕はインクルードガードシンボルにuuidを含ませる事があるんですが
Cのプリプロセッサで処理するシンボルは最大何文字までいけるんでしょう?
#define HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE
ぐらいのものは処理できるならまぁ十分なんですが気になります
あと変数名や名前空間名も何文字までいけるか気になります
ADLバリアを使うと結構文字数増えますし、
もしあまりに少ない文字数(例えば31文字)だったとしたら怖いんで

788 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:23:36 ]
プリプロセッサの制限はわからんけど、
C89までは厳密には識別子は先頭6文字位じゃなかったっけ
C99で32文字になったような気がしないでもない

789 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:39:22 ]
プリプロセッサの制限はわからんけど、

内部識別子は最低32
外部が8くらいだったと思う。6かもしれん。
VC6なんかでは外部256とかで、複雑なtemplateとかで警告が出るね。

790 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:40:07 ]
あ、これはC89ね



791 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 23:21:31 ]
完全にうろ覚えだけど、マクロ名などの内部識別子は、
C89が31文字で、C99は63文字だったと思う。

792 名前:791 mailto:sage [2008/02/02(土) 23:50:16 ]
C++98ではCにはあったtranslation limitの既定がなくなって、長さに制限はないと明記されているね。
付録のBで内部外部ともに1024文字以上を推奨ってことになってる。(これは一応調べてきた

793 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:14:52 ]
クラスあったら構造体いらないと思うんですが、構造体で宣言する利点って何ですか?

794 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:20:15 ]
メッセージループ(DispatchMessage)に入る前にウィンドウプロシージャにメッセージが飛んでしかも処理されてるっぽいんですが
当たらしく作られた別スレッドで動いてるんですか?このウィンドウプロシージャってやつは

795 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:26:14 ]
ある種のAPIは、直接プロシージャを呼び出して配送する。
有名なのは、UpdateWindowのWM_PAINTなど。

796 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:32:13 ]
ほかにもWM_CREATEやそれより前にやってくるメッセージはCreateWindow(Ex)内部で呼ばれるし、
Send系で送る場合も同一スレッドなら直接呼ばれる。

797 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:33:50 ]
>>795
ああ、なるほど、そういうことですか
そういうパターンをすっかり見落としてました

798 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:37:05 ]
>>793
ただの構造体が欲しいときかな。
たとえば
APIにパラメータを渡したいとき。
ハードウェアをアクセスするとき
オフセットをがっちりあわせたいとき



799 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:37:18 ]
>>793
しかしだね、
class Hoge { public: int id; double data; };
に対して
hogeInst.id = 1;
hogeInst.data = M_PI;
なんて操作をするのは背筋がぞわぞわしないか?

800 名前:デフォルトの名無しさん [2008/02/03(日) 00:59:29 ]
char* str = "aあいう"
みたいに日本語とアルファベットが混在した文字列の、
文字数を数えるにはどうすればいいのでしょうか?
strlen(str);
とすると7になってしまいます。

環境はWindows XPでWin32APIを使ってプログラミングをしてます。



801 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:04:38 ]
wchar_t* str = "aあいう";
wcslen(str);

802 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:05:10 ]
L"aあいう"; だた

803 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:12:01 ]
すいません、少し説明が足りませんでした。

そもそも何がやりたいかというと、
char*からwchar_t*への変換をしたいのですが、

char*変数のstrに'L'をつけて、L(str);とするとエラーになってしまいます。

そこで、MultiByteToWideCharで変換しようと思ったのですが、
wchar_t* wstr = new wchar_t[len];
というふうに、変換後文字のためのバッファをとろうとして、
その長さのlenをどう数えたらいいか分からなくなりました。

804 名前:デフォルトの名無しさん [2008/02/03(日) 01:16:44 ]
>>803
MultiByteToWideCharの仕様をMSDNで良く見直すこと。
とくに戻り値の説明を。

805 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:22:44 ]
>>798-799
ありがとう。構造体で出来るなら構造体で済ました方が楽ってことですね

806 名前:803 mailto:sage [2008/02/03(日) 01:25:33 ]
>>804
ありがとうございます!

len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);

これで長さがとれました。

807 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:30:13 ]
ある関数の返り値を配列でほしいのですが
関数の返り値にvectorやらlistを返すのってありですか?
それとも引数から参照渡しで変更させたほうがよいですか?

808 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:36:04 ]
コストを気にしなければあり。

809 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:08:30 ]
参照渡しで変更させたほうがいいなぁ。
要素数一桁だとか、RVOが可能な記述が出来るならともかく。
どうしても戻り値がいい場合はshared_ptrで包む。

810 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:31:06 ]
バイナリでのファイル入出力って普通のと何がちがうの?
バイナリ形式で保存したのをメモ帳で開いても普通に出力したのと変らないんだけど



811 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:53:33 ]
>>799
C++ にもプロパティがあればいいんだけどね。
拡張機能で用意されてる事もあるが。

812 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:59:27 ]
>>807
配列の先頭アドレスを返す、じゃダメなのかな

>>810
普通のっていうのはテキストモードのことだよね
テキストモードだと改行文字をいじったりしてる

詳しく知りたい場合は「fopen テキストモード」とかでググれば出てくると思う

813 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:15:45 ]
C++の参照渡しって、結局中ではアドレスが渡されてるんですか?

そうじゃないとしたら一体どうなってるんでしょうか?

814 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:21:35 ]
結局中ではアドレスが渡されてる実装しかないだろうな。

815 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:29:27 ]
>>812
ありがとうございます
「 ソε2:ホSSカ「8蟹Mタラ男ユムゥtn鶏」みたいな文字化けしたような感じで
書き込まれるのかと思ってたけど違うのね
こんな文字化けしたようなdatファイルとかってどうやって作ってるの?

816 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:36:58 ]
文字以外を書き込めばなりやすいな

817 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:44:10 ]
>>815
書きたい内容をそのまま書けばいい。

static const unsigned char data[] = {
0xBF, 0x83, 0xC3, 0x32, 0x3A, 0xCE, 0x53, 0x53,
0xB6, 0xA2, 0x38, 0x8A, 0x49, 0x4D, 0xC0, 0xD7,
0x92, 0x6A, 0xD5, 0xD1, 0xA9, 0x74, 0x6E, 0x8C,
0x7B}; // 「 ソε2:ホSSカ「8蟹Mタラ男ユムゥtn鶏」

FILE* fp = fopen("test.dat", "wb");
fwrite(data, 1, sizeof(data), fp);
fclose(fp);

818 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:47:54 ]
そのデータだと

FILE* fp = fopen("test.dat", "w");
fwrite(data, 1, sizeof(data), fp);
fclose(fp);

でも同じ物が書き込まれるがね。

バイナリモードとテキストモードの違いは
メモリ上で 0x0D('\n') となるバイトを
ファイル上でその環境の改行コードに変換するか否かしかない。

819 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 08:05:56 ]
>>817-818
ありがとう。でも全然分からない
おれにはまだ早かったみたいです
とりあえずテキストとバイナリモードの違いは\nとかが違うだけで文字は変わら
ないんですね
勉強してきます

820 名前:デフォルトの名無しさん [2008/02/03(日) 09:13:33 ]
>>811
なければ自分で作ればいいじゃん。
俺は処理系非依存のプロパティ変数クラスを作った。



821 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:00:39 ]
>>819
結果はメモ帳で見るよりバイナリエディタで見た方が分かりやすいかと思う。

何かバイナリモードとテキストモードでもの凄く違うと考えてるみたいだが、
動作的には大した違いはない。
普通は fprintf はテキストモードで、fwrite はバイナリモードで使うが、
別にそう使わないといけないという決まりはないんで、
バイナリモードとテキストモードで同じ物を書き込んで
それぞれどうなるか実験してみればいい。

822 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:25:33 ]
>>820
プロパティリストではなくて、delphiのプロパティ宣言みたいなものが作れるの?


823 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 12:01:34 ]
>>820
初期化が必要なのは面倒臭い。

824 名前:デフォルトの名無しさん [2008/02/03(日) 12:57:16 ]
複数のソースで使うヘッダファイルの変数や関数が、
多重に宣言されないように、externの宣言がありますが、
ヘッダファイルに↓みたいな多重インクルードガードをつけたときも、
externは必要なのでしょうか?

#ifndef AAA_H
#define AAA_H
//ヘッダの内容
#endif

825 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:01:13 ]
extern はリンク時の多重宣言を回避するための物。
インクルードガードはコンパイル時の多重宣言を回避するための物。
全く別の物。

826 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:26:37 ]
>>824
必要。


827 名前:824 mailto:sage [2008/02/03(日) 13:32:45 ]
>>825
>>826
ありがとうございます。

今は、複数ソースで共有する変数/関数にはextern、
全ヘッダにとりあえずインクルードガードをつけてます。

違いがよくわからず、不安なんですが、
こんなんでいいのでしょうか?

ちなみに、関数の方はexternをつけなくても動きました。

828 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:42:54 ]
関数はデフォルトでextern

829 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:45:22 ]
コンパイルとリンクの違いを調べるといいよ

830 名前:デフォルトの名無しさん [2008/02/03(日) 13:51:38 ]
c++で、int [] hoge(適当な引数)
みたいに、配列を返す関数って定義できますか?
上記はできなかったので、結局int []を持つstructを定義して、それを返すように
したのですが、、



831 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:54:14 ]
普通は効率を考えて配列を渡してそこに書き込むようにする。

832 名前:824 mailto:sage [2008/02/03(日) 13:54:51 ]
>>828
そうなのですか。一つ大きな疑問が解決しました。
ありがとうございます。

>>829
勉強してみます。

833 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:58:36 ]
>>827
関数でも、関数定義を複数書けばエラーになるよ。
エラーにならないのは関数定義は1つしか書いてなくて、
他は関数プロトタイプしか書いてないから。

834 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:30:12 ]
>>825
うそん。
>extern はリンク時の多重宣言を回避するための物。
多重宣言どうこうっていうか、外部結合を明示するだけの物じゃないのか?
そもそもC言語って定義で無い宣言は複数回しても良いんじゃなかったっけ?

突っ込み入らないってことは俺が誤解してるんだろうか。

835 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:37:54 ]
>>834
>そもそもC言語って定義で無い宣言は複数回しても良いんじゃなかったっけ?
そのとおりだよ。
extern指定子の無い宣言は仮の宣言。
コンパイル単位に定義が見つかったら、仮の宣言は冗長な定義として
無視される。そうでなければ0で初期化される単一の定義になる。

と思ってる。

836 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:38:09 ]
C は仮定義があるから初期化しなけりゃ
複数の記憶クラス指定子のない変数宣言があっても大丈夫。
C++ は仮定義が廃止されたので
複数の記憶クラス指定子のない変数宣言があるとエラー。

837 名前:デフォルトの名無しさん [2008/02/03(日) 14:40:39 ]
gcc用で配布されているコードを,
VisualStudio2005でコンパイルしたところ,
エラー 1 error C2143: 構文エラー : '{' が ':' の前にありません。 c:\program files\microsoft visual studio 8\vc\include\cmath 18
エラー 2 error C2059: 構文エラー : ':' c:\program files\microsoft visual studio 8\vc\include\cmath 18

といった無数のエラーが出ました.

ちなみにcmathはインクルードしておらず,
#include<stdio.h>

#include<stdlib.h>


#include<math.h>

#include<complex>
だけです.

どなたかアドバイス頂けませんでしょうか?

838 名前:デフォルトの名無しさん [2008/02/03(日) 14:45:22 ]
>>831
ありがとうございます。
参照渡しとかですね。

すいません、あと1つ質問させてください。
stringを継承して、[]をつかって[-1]と[サイズ+1]の要素にアクセスに行ったときだけ
動作の異なるクラスを定義できますか?自分でやろうとしたのですが、コンストラクタ
は継承されないから自分で定義しなおさないとダメなのですよね。そうすると、コンストラクタ
を書くのが結構大変なような気がしたので。


839 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:49:14 ]
>>838
コンストラクタだけじゃなくて演算子だって定義する必要があるんだぜ。
戻り値の型が変わるから。

at 関数を使うと範囲チェックして out_of_range 例外投げるから
それ使えばいいんじゃね?

840 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:51:57 ]
a.exe から LoadLibrary で b.dll を呼び出すんだけど、
b.dll から右側では .NET を使いたい。

 a.exe → b.dll

このような場合、b.dllをC++/CLIで作成することになるのかしらん?



841 名前:デフォルトの名無しさん [2008/02/03(日) 14:54:13 ]
>>839
なるほど、それでやってみます。
サンクス!


842 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:58:05 ]
>>838
stringは仮想デストラクタを定義していないから
public継承するのはどうかと思うけど、コンストラクタ
の呼び出しに関しては、stringのコンストラクタ
を派生クラスのコンストラクタ初期設定リストで
指定すればいいだけじゃないの。


843 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:58:47 ]
>>840
a.exeからC++/CLIでどぞ

844 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:01:44 ]
>>840
C#でもVB.NETでもお好きにどうぞ

845 名前:840 mailto:sage [2008/02/03(日) 15:16:22 ]
>>843
a.exeは他所で作ったものだから、漏れはいじれないんだ。

>>844
LoadLibraryでもマネージDLLを呼び出すことができるってこと?

846 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:31:59 ]
>>808>>809>>812
返答ありがとうございます

色々とやり様があるみたいですが、c++的にはやはり生の配列を返すよりコンテナを返したほうがよいのでしょうか?
そうするとやはりlistを引数に取る関数に参照渡しが無難なのかなぁ・・・?

847 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:33:16 ]
class Hoge1
{
 void hatena(void)
 {
  Hoge2 ht;
  ht.nazo(*this);
 }
};

class Hoge2
{
 void nazo(const Hoge2 &rho){}
};

みたいなのがあって

ht.nazo(*this);のところでエラーになります。

どうす

848 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:36:10 ]
>>847
nazo(const Hoge1・・・にす

849 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:37:13 ]
&rho

850 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:37:17 ]
>void nazo(const Hoge2 &rho){}

nazoは引数にHoge2を取るようだが
thisポインタってhoge1のアドレスを示してるんじゃないの?



851 名前:837 mailto:sage [2008/02/03(日) 15:38:34 ]
>>837
の質問はVC++スレに書き直しました.
マルチポストすいませんでした.

852 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:41:31 ]
Hoge &rho






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<252KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef