C/C++小心者スレッドPart1

このエントリーをはてなブックマークに追加
936デフォルトの名無しさん:2010/03/28(日) 20:57:05
typename vector<T>::iteratorか。
937デフォルトの名無しさん:2010/03/29(月) 20:14:09
test
938デフォルトの名無しさん:2010/03/29(月) 20:59:59
個人的にはそろそろ>>928前者のような直接値を返すのも
VC10とかg++ 4.3とかめちゃくちゃ新しいコンパイラならはありだと思うようになってきた。
C++0xのおかげでコピー発生しなくなったから。
939デフォルトの名無しさん:2010/03/29(月) 22:17:32
それはちゃんと右辺値参照をアレするクラスを書いた時限定じゃないのか
全てライブラリのコンテナに限定するなら構わんだろうけど
940デフォルトの名無しさん:2010/04/07(水) 05:36:10
error: pointer to incomplete class type is not allowedってどういうことですか?
941デフォルトの名無しさん:2010/04/07(水) 05:40:42
>>940 そのまんまだろう。
942デフォルトの名無しさん:2010/04/07(水) 13:16:50
>>940
不透明ポインタあたりでぐぐれ
943デフォルトの名無しさん:2010/04/25(日) 09:34:01
すみません。ビルドして作った実行ファイルに、
別のファイルをドラッグ&ドロップし、処理を加えたいのですが、
そのドラッグ&ドロップした1〜多のファイルのパスを、変数として得るにはどうすれば良いのでしょうか?

検索すべきキーワードか参考になるURL程度の情報で構いませんので
何かヒントを教えて頂けると助かります。よろしくお願いします。
944デフォルトの名無しさん:2010/04/25(日) 11:05:56
コマンドライン引数とか、MFCだったらOnDropFilesとか
945デフォルトの名無しさん:2010/04/25(日) 12:05:06
Cのコンソールプロジェクトだとすると、これビルドしてドラッグドロップしてみ

#include <stdio.h>
int main(int argc, char **argv)
{
int i;
for(i=0;i<argc;i++) printf("%s\n", argv[i]);
printf("\n\nPress Enter key to exit.\n");getchar();
return 0;
}
946デフォルトの名無しさん:2010/04/25(日) 15:13:34
>>944 >>945
ありがとうございます。
コマンドライン引数とはそういう代物だったのですね。(普段コンソールをさらわないもので;)
しかしOnDropFilesで調べると、苦手なWindowsメッセージ関係を触らねばならない予感・・。
今回は私的で単純な処理なので、945様に頂いたコード。理解できましたので
コンソールに置き換えて実現しようと思います。
お二方、ありがとうございました。
947デフォルトの名無しさん:2010/04/26(月) 10:05:39
>>946
ドラッグ'n'ドロップでコマンドライン引き数に展開するってのはWindows限定の話だからね。
つーか、そもそもたまたま回答者がWindowsを想定してくれたからいいけど
自分の使いたい環境くらい書いて質問しなさいよ。
948デフォルトの名無しさん:2010/04/26(月) 20:14:58
まぁ明記されないGUI環境なら、回答者がWindowsを想定するのはたまたまじゃなくて
自然だと思うけどな、現実的に考えて
949デフォルトの名無しさん:2010/04/27(火) 12:19:39
>>947
DnDなんてC/C++標準じゃあないわけだし、標準からずれるんだったら環境書いてほしいという
もまいの意見を否定する気はまったくないが、

DnDの挙動がそうなってるデスクトップ環境やらファイラやらって、X11でもそれなりにあるぞ。
使い勝手考えたら、自然な仕様なんじゃないかとは思う。
950デフォルトの名無しさん:2010/04/28(水) 13:55:55
次スレ誰か立ててよ!
俺立てられないし。
951デフォルトの名無しさん:2010/04/28(水) 15:24:32
この勢いならまだ慌てる時間じゃない
980くらいで十分じゃないか
952デフォルトの名無しさん:2010/04/29(木) 00:28:55
と、油断していたら荒れる話題が出てきて一瞬で1000まで行くという不思議。
953デフォルトの名無しさん:2010/05/06(木) 23:20:18
二ヶ月前から猫Cを教本にCを勉強して昨日読みきったんだが
これからどうすればいいのかまさにポカーンとしてるんだ。

最終目的は業務を効率化させるwinプログラムを組みたいんですが
次は猫winに行くべきなのか、もう少しコンソールアプリの勉強をしたほうがいいのか。

皆の勉強してきた履歴やこれからこうしたほうがいいんじゃね?
って勉強方法を教えてくれ。

独学でやっているので周りにCが判る仲間はいない。さびしい。
954デフォルトの名無しさん:2010/05/06(木) 23:47:35
>>953
これこれこういうことができると便利になるのになあ、みたいな
構想はあるの?(プログラムを外注に出すとしても、それは
自分で考えないといけない)
955953:2010/05/07(金) 00:07:29
数年前に関係会社にシステム変更を外注したんだけど
中途半端なシステムを売りつけられて終わった感じなんです。
社内にプログラムやPCに詳しい人も居なかったんで誰も強く言えず
不便ダナァと思いながら日々そのシステムを使っています。
この中途半端なシステムを何十年も使い続けるわけには行かないんで、
自分で勉強をして、便利なシステムが出来るよう提案しようと思ってる。

いかんせん知識がないと外注先とも話ができないもんで。
必要な知識を揃えて、たたき台のプログラムを上司や外注先に
プレゼンで提示したいなって考えてる。

そのシステムにはネットワークが使われてるんでそのへんの勉強もしたい。


今の自分の実力はコンソールアプリでやっと簡単な表計算プログラムや
時刻の処理とかバイナリやテキストファイルの出力が出来るようになった感じです。
956デフォルトの名無しさん:2010/05/07(金) 00:20:10
>>955
VB とか C# とかだと、ボタンとかをぺたぺた貼り付けて
このボタンを押したときはこうやって…、このボタンを押したら
このウィンドウを出して…、とかがわりとかんたんにできるので、
(ボタンを押したときの処理とかは、今までに勉強したことが
役に立つと思うし、)そういうのに手を出してみてもいいんじゃ
ないかと思う。
実際の処理の実装が難しすぎるなら、画面だけ作って、
「このボタンを押したらこういう処理をして…」みたいな感じで
外注に指示を出すこともできると思う。
957デフォルトの名無しさん:2010/05/07(金) 00:43:30
俺の場合コンソールアプリケーションから入ってるけど
それはその時はそういう必要があったから
coding できるようになることが目的ならば(そこが明らかではないけど)
coding するしかない
coding するなら自分の興味のあることや必要なことの方が早く進む

ネットワークプログラミングだけでも十分歯ごたえある
GUIまでやるならC++/C#みたいな言語の方が良いと思う
俺はC++使ってるけど,入り方気をつけないと煩雑だから混乱すると思う
958デフォルトの名無しさん:2010/05/07(金) 01:24:08
外注するならプログラミングより要求定義の勉強をした方がいい気がするが……
959953:2010/05/07(金) 23:35:59
レスサンクス。

C#は非常に興味があるのでチャレンジしたいと思います。
VBは作ったソフトが重いというのでちょっと敬遠・・。

コーディングできる様になることも目的としています。
周りみてると誰も使えそうな人がいないんで、社内に一人いれば
長いリーマン生活のなかで役に立つと思うんで。
GUIまでやりたいんで、C++とかC#も同時進行したほうがよさそうですね。

要求定義の必要性も感じています、自分は不平の中に改善点があると思ってるんで
ただ、それを現す日本語力が不足してるんで、根回しや下準備に力を入れたいと思うよ。

暫く今ある知識でC言語で事務処理系のコーディングして
Cがもっと理解できるようになったらC#かC++に手を出すよ。

みんなアリガトウな!
960デフォルトの名無しさん:2010/05/07(金) 23:39:31
>>959
> GUIまでやりたいんで、C++とかC#も同時進行したほうがよさそうですね。
それはたぶん止めといた方が良いと思うぜ。

> 暫く今ある知識でC言語で事務処理系のコーディングして
> Cがもっと理解できるようになったらC#かC++に手を出すよ。
それならおk。
俺的&このスレ的にはC++がお薦め。
それかJavaでもOK。C#は存在が中途半端。
961953:2010/05/07(金) 23:55:27
>960

まだVB、JAVA、C++、C#の各種言語の違いと特性を把握できないんだが。
まぁ、VBは素人目から見てても実行速度遅そう・・・って思う。
JAVAは、どの環境でも移植出来るのか・・・便利そう?って感じがする。

C#をお勧めしない理由はなんでかな?良かったら具体的に教えてくれ。
962953:2010/05/08(土) 00:58:42
事故レスですまない。
ぐぐってC++とc#の違いをなんとなく読んできた。
C++の方がC言語の知識を流用できそうなので、もう少しCを掘り下げてから
windowsプログラムに手を出すのと同時にC++かなぁ、ってなんとなく目標ができました。
963デフォルトの名無しさん:2010/05/08(土) 01:32:39
Cは程々にしといてなるべく早くC++に移ってしまうべき
964デフォルトの名無しさん:2010/05/08(土) 02:16:12
Windows用のGUIアプリ作るならC#は良い選択だと思うけどね
965デフォルトの名無しさん:2010/05/08(土) 02:45:14
正直、そういう用途ならPythonとかPHPとかの方がいいと思うけどな。
C++も簡単なTMPくらいは書けるからそこそこやれる方だと思うけど、それでも
コンソールで済む用途にはPerlを使ってる。今から覚えるんならPythonかPHPかな、
と思うけど。
まぁこの辺のはいわゆるスクリプト言語なんだけど、開発速度が圧倒的。仕事で
これは相当大きいんだよな。
例えば、納期三時間前に「不正なデータをなるべく調べ上げて修正しておきたい」
とか言われた時、スクリプトだと数分でそこそこできるし、一時間あればかなり
面倒なものまで書ける。何より、安全装置がガチガチだから、バグが出にくい。
その分遅いけど。
暇なら両方覚えた方が絶対にいいけどね。先にPythonってのも悪くないと思う。
動く物を一つ作れるようになるまでの時間も全然違うだろうし。
966デフォルトの名無しさん:2010/05/08(土) 05:43:46
>>959
> VBは作ったソフトが重いというのでちょっと敬遠・・。
今からVBを選ぶ理由もないんだけど、実用に耐えないほど重いわけじゃないよ。
処理の内容によるが、大抵は問題ない。なので、世の中に大量に出回ったわけで。

同様の理由で言語を弾くならC#、ましてJava、スクリプト言語は弾かれるよ。

>>965も暗に言っているけれど、
・正しく動くが遅い(ただし許容できる速度)ソフト
・出来上がっていないが多分速い(もしかするとすごく遅い)ソフト
どっちがいいかっていうところ。

個人的にはC#。C#厨ですまんうへへ。PHPでもいいけど。
967デフォルトの名無しさん:2010/05/08(土) 08:06:00
PHPは言語としてはウンコだからお勧めしにくいが、Web関連をやるならかなり有利に
なる面もあるからな、現状だと。
968デフォルトの名無しさん:2010/05/08(土) 08:57:29
遅いVBってVB6の話だよね?
VB.NETはC#と大差ないはずだし

LL言語もいいけど、事務系の業務効率化だと一番即効性があるのは
VBAという場合もあるわけで(業務次第だが)
あとバッチファイルで管理作業を効率化とか

でも趣味として一番面白いのはC++だと思う。一生付き合っていける言語。
969953:2010/05/08(土) 14:26:58
書き込むまで壁にぶち当たってましたが
コンソールアプリで文字列の暗号の作成プログラムやら
データソートプログラムなんかの練習を始めました。
コンソールアプリでアルゴリズムやコーディングに慣れてから
猫winも飼って来たので、これを教本にちょこちょこGUIも書き出しました。

API関数?が一通り使えるようになったらC++に行きます。
名無しに戻るけど、また壁にぶち当たったらみんなアドバイス頼みます。
thx!
970デフォルトの名無しさん:2010/05/10(月) 08:35:14
まぁ低水準から積み重ねた知識が無いと高水準言語の使いこなしも半端になりやすいし、
時間掛かってもいい覚悟ならC++から踏み込むのは悪くない
その意味じゃアセンブラを知識だけでもかじるのがベストなんだけど、まぁ、極端か
971デフォルトの名無しさん:2010/05/10(月) 11:56:56
>>953
弊社にご相談ください。どんなシステムでも根気よくご相談して必ずやご納得いただけるシステムに成長させてご覧に入れます。
又、プログラミング教育も手取り足取りフレンドリー。イメージしたものを的確に形にできるエンジニアになれるようお手伝いします。
迷う必要はありません、今すぐご連絡を(ぉぃ
972デフォルトの名無しさん:2010/05/11(火) 00:14:18
すみません。char型の配列の配列に入ってる文字列を
enumで列挙した名前=定数 のように利用できる方法は無いでしょうか?

char[3][20]に EBI  IKA  TAMAGO 等と入ってて
それを別の配列abc[30]の要素数に abc[TAMAGO]; と言った形に。(3番目=2)
無理ですかね・・?(・ω・`
973デフォルトの名無しさん:2010/05/11(火) 00:20:30
Perlの連想配列、C++のSTLのmap
一般的に言うところのハッシュテーブルみたいなものかな
974デフォルトの名無しさん:2010/05/11(火) 00:21:41
>>972
#include <string>
#include <cstdio>
#include <map>

int main()
{
std::map<std::string, std::string> foo;
foo["EBI"] = "EBI";
foo["IKA"] = "IKA";
foo["TAMAGO"] = "TAMAGO";
std::printf("%s\n", foo["EBI"].c_str());
return 0;
}
975972:2010/05/11(火) 00:51:24
>>973-974
mapで補えるんですね。さすがにdefineみたいま扱いは無理そうですね(・ω・`
勉強になりました。ありがとうございます。
976デフォルトの名無しさん:2010/05/15(土) 12:01:05
>>975
""付けるのが面倒って意味なら、C++じゃdefine, enum以上のことはできないな。
俺の知る限り、C++では識別子は全部コンパイル時までに決定されて、動的に識別子を増やす方法はない。

けれど何がやりたいのかよく分からない。
コード中に直接TAMAGOとか埋め込みたいんだったら、コンパイルまでに決まってるわけだからenum使ったらいいんじゃないのか?
決まってないんだったら、map使いたくない理由が分からんし。
977デフォルトの名無しさん:2010/05/15(土) 12:14:26
まぁ、C++の「ライブラリが頑張ればある程度楽なパラダイムで書ける」って側面が
どこまで使えるか、といういつもの話だな。
低レベルかき回しても何でもどうにかしたい、っていう用途ではCと並んで無双の強さ
だが、その強さを維持するのを至上命題としつつも高度な抽象化に対応しようとする
言語だから、楽なパラダイムで書こうとすると制約は少なくない。

余談だが、この「C/C++の最大の武器」を理解してない奴が見ると、C++はまさに
論理的にすっきりしない罠や意味不明の制約だらけの糞言語なんだよな。だから、
初心者はいきなりC++に触るよりC(またはアセンブラ)から勉強する方がいいと
俺は思ってる。
978デフォルトの名無しさん:2010/05/16(日) 11:27:20
C++は、抽象化の高い記述も出来る低レベルな言語なんだよね
「C++の設計と進化」を読むとstroustrupの意図は分かるし、
結構同意できる。

C++の特徴って、何かプラスした結果、同時に大きなマイナスも持ち込んでる
ことだと思う。(記述が増えたり、落とし穴があったり)
でもC++の信者って何でも正しいと思い込んでて、話が合わない

CもC++も分かってる人から見ると、マイナス部分をうまく回避しながら
プラス部分を利用しないと、却ってひどいことになってしまう
しかし、初心者だとひどいことになってるかどうか判断つかない
だから、泥沼に入りやすい言語なんだよね、特に初心者に
979デフォルトの名無しさん:2010/05/16(日) 19:10:24
>>978
> でもC++の信者って何でも正しいと思い込んでて、話が合わない

そんな奴いるのか?使ってたらそうは思わんだろう
たとえば,初めからC++言語をデザインするのであれば
こうデザインするか?という質問で yes と答える人間はいないだろう

Cを引きずってるところが使える遺産がすごく多いという意味でも
良いところでもあるけど,言語仕様だけから考えると理想的とは言えん
980デフォルトの名無しさん:2010/05/16(日) 21:18:39
>>978
落とし穴はゼロオーバーヘッドの代償としか思えないものがほとんどだけどなぁ
単純に互換性に縛られてる場合もあるが
最初から0xならもう少し楽だったんだろうけどな(それ以前が不満な人には0xも大差無いかも)
981デフォルトの名無しさん:2010/05/17(月) 01:22:19
>C++の特徴って、何かプラスした結果、同時に大きなマイナスも持ち込んでる 
具体例を挙げてくれ。
982デフォルトの名無しさん:2010/05/17(月) 07:14:38
高級言語レベルの目線しか無いうちは、C/C++の仕様の意図は分からない。
ネイティブコード目線があれば、「遅くなる仕様は入れないんだな」と単純に分かるんだが。
983デフォルトの名無しさん:2010/05/18(火) 00:05:31
STLって全て「遅くなる仕様は入れないんだな」にかなってるの?
個人的には便利だからよく使うけど
984デフォルトの名無しさん:2010/05/18(火) 02:42:23
ライブラリと言語使用はちがうんでないの
もちろんライブラリ自体は最適化されてはいるが
985デフォルトの名無しさん
それより、高級言語と低級言語、という分け方しか無いのがなぁ
例えばスクリプト言語なんかでファイル操作する時にclose書かないと駄目だったら
アホかと思うけど、逆にC++でcloseが必要なのがうざいとか言い出したらアホかと
思うじゃん
水準違いの要求を持ち込まれやすい言語だなぁとは思うっつーか、C++自体が分類
しづらい存在でもあるからなぁ
あとSTLはアホな使い方しなきゃ豪快に速いと思うけど(boost::arrayみたいな奴が
最初からあればもっと良かった)