[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 01/28 12:32 / Filesize : 120 KB / Number-of Response : 460
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

スレを勃てるまでもないC/C++の質問はここで



1 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 20:07:25 ]
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。

433 名前:デフォルトの名無しさん [2007/02/27(火) 16:50:30 ]
>> 430

BCC + BCC Developer は?
もしかして却下?

Turbo Debbuger まで全部タダでそろうが…。

BCC Develoer のクラスでSTL使えたか忘れたが…。

434 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 16:54:18 ]
>>433
STLも使えたはず。


435 名前:デフォルトの名無しさん [2007/02/27(火) 17:00:16 ]
>> 434

そうですか!情報提供ありがとうございます。
VCのMFCでは文字列クラスがSTLと共存できない使用だったはず…
最新バージョンでは使えるようになったのかな??
使えないなら BCC の方がよさそうに思いますが…。

436 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 17:19:16 ]
Borland C++よりVC++ (7.1以上)の方がテンプレートがまともに使える。
STLを使えるかどうか気にするなら、それだけでVC++を選ぶには十分。
MFCとの相性が悪いなら、むしろMFCなんて捨ててしまえ。

437 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 17:21:18 ]
Cコンパイラとして使うならbccよかgccのほうがマシだろ

438 名前:デフォルトの名無しさん [2007/02/27(火) 17:31:37 ]
>> 436

たしかに自分使ってない。

>> 437

gcc は使ったこと無くて…

439 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 17:44:30 ]
BCCはいまだにC++コンパイラではない
Boostの些細なライブラリが通らないので
C++を知っている人間なら薦めない
(某サイトは特集していたが)
MFCがBoostやSTLやだれそれと共存できないなんてことはない

440 名前:デフォルトの名無しさん [2007/02/27(火) 17:47:44 ]
>> 439

いえ自分が言っていたのは MFC内で使われている 文字列クラスと
STL の string クラスの互換性の話…。

MFCをポイすれば悩むこと無いでしたが…

441 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 17:55:10 ]
>>440
MFCの文字列クラスとSTLのそれを混在させなきゃいいだけの話じゃないの



442 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:10:26 ]
>>440
文字列に限らずコンテナ類も互換性がないが、それより
「互換性がない」と「共存できない」じゃまるで意味が違うだろが。

443 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:14:12 ]
たしかにMFCのCStringTとstd::basic_stringは別物だが、
相互に変換できないわけではないし、
Boost.Range(或いはイテレータ)では統一的に扱えるんだから、
そこまで気にすることは無いと思う。

444 名前:デフォルトの名無しさん [2007/02/27(火) 19:00:22 ]
>> 443

参考になりました。ありがとうございます。


445 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 19:33:39 ]
template<class T>class A{
 private: T na;
 public: A(T a):na(a){};
 friend A<T> operator + <T>(A<T>&,const A<T>&);
};
template<class T>class B{
 private: T nb;
 public: B(T b):nb(b){};
  friend B<T> operator + <T>(B<T>&,const B<T>&);
};

template<class T>A<T> operator +(A<T> a1,const A<T>& a2){a1.na=a1.na+a2.na;return a1;}
template<class T>B<T> operator +(B<T> b1,const B<T>& b2){b1.nb=b1.nb+b2.nb;return b1;}
でBのメンバ変数にアクセスできないのはなぜ--??

446 名前:デフォルトの名無しさん [2007/02/27(火) 20:23:37 ]
>> 445

template<class T>A<T> operator +(A<T> a1,const A<T>& a2){a1.na=a1.na+a2.na;return a1;}
template<class T>B<T> operator +(B<T> b1,const B<T>& b2){b1.nb=b1.nb+b2.nb;return b1;}

template<class T>A<T> A<T>::operator +(A<T> a1,const A<T>& a2){a1.na=a1.na+a2.na;return a1;}
template<class T>B<T> B<T>::operator +(B<T> b1,const B<T>& b2){b1.nb=b1.nb+b2.nb;return b1;}

とすればいいのでは?

447 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 21:03:12 ]
friend関数なのでそれでも無理っぽいです。

448 名前:デフォルトの名無しさん [2007/02/27(火) 23:08:00 ]
int x;
int &rx = x;

これおかしくね?
&rx = x; 何でアドレスにint型の変数を代入するの

449 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 23:08:45 ]
「参照」を知らない香具師は基礎からC++やり直せ

450 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 23:45:33 ]
(int &)rx=x;
rはreferenceのr
宣言時に型の直後に&をつけたものは参照型になる
嘘です

451 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 13:09:55 ]
ネットで落としてきたcppファイルとdefファイルを使ってdllを作成したいんだけど、
やり方がよくわかりません。

ぐぐって見たところ、
ファイル→新規作成→プロジェクトタブ→win32 Dynamic-Link Library or MFC Appwizard(dll) を選んで
もにょもにょするって書いてあったんですが、↑の時点で2種類のやり方があってどっちが正解かわからないですし、
そもそも貰ったファイルをdll化することが目的なので新規作成からやるのは何か間違っている気がします。

とりあえずcppファイルを開いてコンパイルして、、、defファイルをプロジェクトに追加。
そして再度コンパイルをしてみても・・・無理でしたorz

どなたか助言をお願いします…

環境はvisual V++ 6.0 Standard Editionです。
よろしくお願いします。



452 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 13:14:23 ]
>>451
dllを新規作成するからあってるのでは?
そのdllプロジェクトにソースを追加してモニョモニョするんだと思うんだけど。

453 名前:451 mailto:sage [2007/02/28(水) 13:35:42 ]
うは…なるほど、そういう解釈ですか…

とりあえず
ファイル→新規作成→プロジェクトタブ→win32 Dynamic-Link Library
を選んで空のDllオブジェクトを選択して(この時点で意味不明ですが…他選ぶとどうなるの…?)

プロジェクトの追加でcppを選んでビルドしてみたら何故かdllファイルが出来上がっていました
個人的にはキタ━━━━(゚∀゚)━━━━!!!!
でもどうなってんのか全然だ(ノ∀`)

dllにもフォーマットがあって、cppファイルに則したやり方じゃないとうまく生成されないのだろうか。
ちなみにMFC Appwizard(dll)の方で作ろうとしたら、エラーがでて生成されませんでした。なんでやねん(;´Д`)

それ以前に先ほどDllを作成したときには、プロジェクトの追加でcppファイルを追加したわけですが、
defファイルは追加しなくてもいいんでしょうか?
勝手に追加されるから特に選択する必要はないということでしょうかね・・・(ソースによりけりなのかもしれないけれど)

454 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 14:19:10 ]
def ファイルは関数のエクスポートに必要
__declspec(__dllexport) を関数につけてないのなら
def無しで作った場合、出来上がったDLLはどこからも呼べないものになってると思うが
depends.exe 持ってないか?

455 名前:451 mailto:sage [2007/02/28(水) 15:00:26 ]
depends.exeとはDependency Walkerのことなのかな…?

とりあえず、defファイルを追加せずにdll化するとまずそうなので、先ほどの手順で
プロジェクトの追加からcppファイルとdefファイルの両方を追加して見ました。
すると…エラーなしでdll化キタ━━━━(゚∀゚)━━━━!!!!

これで関数もエクスポートできるようなまともなdllになったのかな…

とりあえずDependency Walkerを起動してみて調べたところ、左のツリー状のところに
TEST.dll
  l
  −KERNE32.dll
     l
     −NTDLL.dll

ってなってました。自分にはさっぱりですが、正常にdll化できたと思ってよいのでしょうか(;´Д`)?

456 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 15:13:48 ]
DLLの関数のエクスポートのやり方は2種類あるのよ
・関数に__dllexportを付ける
・.defファイルに纏めてエクスポートする関数を書く。
どっちでもおk。俺は見やすいからdefの方でやる。

457 名前:451 mailto:sage [2007/02/28(水) 15:41:47 ]
なるほど…
まだまだ不勉強なようですね。
でも、ねんがんのdllをてにいれることができたので、レスを下さった方々にはお礼を言いたいと思います。

どうもありがとうでした・゜・(ノA`)・゜・

458 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 16:58:10 ]
>>455
そのTest.dll にカーソルあわせたら
右の下のFunction に一覧出るべ
それがエクスポートされたやつね。

459 名前:デフォルトの名無しさん [2007/02/28(水) 17:29:16 ]
今日からマイクロソフトのVisualC++2003をし始めたんですが、どこかのサイトで
見つけた同じC++の例文とか書いてみても実行したとたん画面が消えるのはなぜですか?

printf とか cout っていうのとかって一緒に使えますか?






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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