C++相談室 part99
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/02/21(木) 17:37:08.31ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part98
http://toro.2ch.net/test/read.cgi/tech/1347964922/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.79【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1341052801/
■長いソースを貼るときはここへ。■
http://codepad.org/
http://ideone.com/
0002デフォルトの名無しさん
2013/02/21(木) 17:41:26.17スレ立て乙
こちらで頼む
まあいいけど
C++相談室 part100
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part98
http://toro.2ch.net/test/read.cgi/tech/1345823164/
C++相談室 part98(実質part99)
http://toro.2ch.net/test/read.cgi/tech/1347964922/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.82【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1359924126/
■長いソースを貼るときはここへ。■
http://codepad.org/
http://ideone.com/
0003デフォルトの名無しさん
2013/02/21(木) 17:42:26.88STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0004デフォルトの名無しさん
2013/02/21(木) 19:38:17.43class Test {
public: Test getThis() { return this; }
};
のように自身を帰したい場合C++ではどのようにかくのですか?
0005デフォルトの名無しさん
2013/02/21(木) 19:48:39.09class Test {
public:
Test* getThis() { return this; }
const Test* getThis() const { return this; }
Test& getThisRef() { return *this; }
const Test& getThisRef() const { return *this; }
};
0006デフォルトの名無しさん
2013/02/21(木) 19:54:00.83それよりテンプラよろ
0007デフォルトの名無しさん
2013/02/21(木) 20:19:28.030008デフォルトの名無しさん
2013/02/21(木) 21:34:15.57Yes
0009デフォルトの名無しさん
2013/02/21(木) 22:03:02.480010デフォルトの名無しさん
2013/02/21(木) 22:06:44.34あなたjavaスレにもいるでしょ?毎日張り付いてご苦労様です。
0011デフォルトの名無しさん
2013/02/21(木) 22:17:24.33Javaスレなんかいないよ
Javaは10年前にかじっただけだから全く分からないし
C++メインで使ってるからこのスレは張り付いてというか一応毎晩チェックしてる
これも張り付くっていうのかな?
まあどっちでもいいや
0012デフォルトの名無しさん
2013/02/21(木) 22:17:31.360013デフォルトの名無しさん
2013/02/21(木) 22:18:59.000014デフォルトの名無しさん
2013/02/21(木) 22:19:39.210015デフォルトの名無しさん
2013/02/21(木) 22:22:22.110016デフォルトの名無しさん
2013/02/21(木) 22:35:51.870017デフォルトの名無しさん
2013/02/21(木) 22:37:27.270018デフォルトの名無しさん
2013/02/22(金) 00:19:54.15お酒を飲んでいたのと、C++がJavaのようにかけないのでイライラしてしまいました。
0019デフォルトの名無しさん
2013/02/22(金) 23:37:04.060020デフォルトの名無しさん
2013/02/22(金) 23:39:17.580021デフォルトの名無しさん
2013/02/23(土) 03:16:59.83if (i == 0) return;
i++;
}
と
void func() {
if (i == 0) {
} else {
i++;
}
ではどちらが好きですか?
0022デフォルトの名無しさん
2013/02/23(土) 03:29:22.36バグの数は行数に比例する
てか、その下のやつ{}が合ってないし
0023デフォルトの名無しさん
2013/02/23(土) 04:25:07.61関数1つあたりの機能を正しく分割できていれば行数など
ふくれあがるわけないんだが。
0024デフォルトの名無しさん
2013/02/23(土) 08:07:45.721行だろうが30行だろうが下で統一したい
0025デフォルトの名無しさん
2013/02/23(土) 08:09:07.44void func(){
if(i!=0){
i++
}
}
こう書くと思うな
0026デフォルトの名無しさん
2013/02/23(土) 08:22:28.44上は、最初に条件付けて関数を実行する状況を事前に制限する意図があるときに使う
下は、純粋に条件分岐する場合に使う
意図次第かと
i == 0 がいいか i != 0 がいいかも意図次第だな
0027デフォルトの名無しさん
2013/02/23(土) 09:28:29.22>上は、最初に条件付けて関数を実行する状況を事前に制限する意図があるときに使う
だね、俺もそうする。
ただ、その場合でも
void func(){
if(i == 0){
return;
}
i++;
}
だな。
0028デフォルトの名無しさん
2013/02/23(土) 09:32:16.52void func()
{
if (i == 0) { return; }
i++;
}
0029デフォルトの名無しさん
2013/02/23(土) 12:29:14.430030デフォルトの名無しさん
2013/02/23(土) 12:38:46.180031デフォルトの名無しさん
2013/02/23(土) 12:59:05.990032デフォルトの名無しさん
2013/02/23(土) 13:09:31.530033デフォルトの名無しさん
2013/02/23(土) 13:46:31.86MISRA とかでも禁止されていたりするしね。
>>32
常にそうだと思うなら、ちょっと頭固すぎ。
0034デフォルトの名無しさん
2013/02/23(土) 14:36:36.04{
if (i != 0) i++;
}
これが一番わかりやすいじゃん
本質的に一行のコードなのになんでreturnとか出てくるの
0035デフォルトの名無しさん
2013/02/23(土) 14:45:27.960036デフォルトの名無しさん
2013/02/23(土) 14:54:06.71と貼り付ける人の気持ちも分からんでも無いな
0037デフォルトの名無しさん
2013/02/23(土) 14:57:45.00実用性とかそんなもの聞いてないんだよ
0038デフォルトの名無しさん
2013/02/23(土) 15:04:03.92それとこれとは違う気がするが・・・
0039デフォルトの名無しさん
2013/02/23(土) 15:18:37.370040デフォルトの名無しさん
2013/02/23(土) 15:21:34.61MISRAなんてものがコーディング規約に含まれている会社の人はご愁傷様としか言いようがない
0041デフォルトの名無しさん
2013/02/23(土) 15:36:37.46コメントに条件式を合わせる
これでコードが理解しやすくなる
そのためなら空のifがあってもいいけど
コードの書き忘れと区別できるようなコメントはあった方がいい
0042デフォルトの名無しさん
2013/02/23(土) 16:00:36.52そう、今自分のことじゃないと思ったお前だよお前
004322
2013/02/23(土) 17:01:23.36void func() {
if (i == 0) return;
i++;
}
と
void func() {
if (i == 0) {
return;
} else {
i++;
}
}
だったわ。すまんこ。
0044デフォルトの名無しさん
2013/02/23(土) 17:06:01.300045デフォルトの名無しさん
2013/02/23(土) 17:42:45.340046デフォルトの名無しさん
2013/02/23(土) 18:49:32.780047デフォルトの名無しさん
2013/02/23(土) 20:16:54.77> そう、今自分のことじゃないと思ったお前だよお前
お前のことだと思った俺はどうすりゃいい? (w
0048デフォルトの名無しさん
2013/02/23(土) 21:57:17.06ガード条件のつもりなのか、そうでないのかをはっきりしろよ
0049デフォルトの名無しさん
2013/02/23(土) 22:19:34.090050デフォルトの名無しさん
2013/02/23(土) 22:52:30.620051デフォルトの名無しさん
2013/02/23(土) 23:27:10.800052デフォルトの名無しさん
2013/02/23(土) 23:36:04.64俺は使わないけど
0053デフォルトの名無しさん
2013/02/23(土) 23:41:22.520054デフォルトの名無しさん
2013/02/24(日) 06:52:00.53えーと、returnの後には基本、elseは置かない習慣だから、
if (i == 0) return;
++i;
だな。
elseを書きたい場合はその前後をイーブンにしたいから、
if (i == 0) {
return;
} else {
++i;
return;
}
とするかも。
まぁ、その場合は、
if (i == 0) {
} else {
++i;
}
return;
だろうな。
0055デフォルトの名無しさん
2013/02/24(日) 10:45:40.71MISRA が規約に含まれてる会社って車業界だから、
どっちかって言うとご愁傷様とか言われるのはお前や
俺たちじゃね? (w
0056デフォルトの名無しさん
2013/02/24(日) 10:50:28.03いきなり自分の価値観を語りだすなよ
0057デフォルトの名無しさん
2013/02/24(日) 10:54:08.21if (i != 0) ++i;
iが想定の範囲内から出ることもあるニュアンスを含めるなら
if (i == 0) return; ++i;
iの範囲によって2種の異なる処理を行うなら
if (i == 0) return; else ++i;
0058デフォルトの名無しさん
2013/02/24(日) 11:13:06.30throwなんてもっとだめなのか
0059デフォルトの名無しさん
2013/02/24(日) 11:25:38.70コードで伝えようとするのは危険
0060デフォルトの名無しさん
2013/02/24(日) 11:33:19.910061デフォルトの名無しさん
2013/02/24(日) 11:40:08.400062デフォルトの名無しさん
2013/02/24(日) 11:48:12.74個人的には ; は1行に2つ以上あると気になるわ(ただしfor文を除く)
0063デフォルトの名無しさん
2013/02/24(日) 11:57:45.690064デフォルトの名無しさん
2013/02/24(日) 12:09:46.580065デフォルトの名無しさん
2013/02/24(日) 12:48:48.620066デフォルトの名無しさん
2013/02/24(日) 13:05:53.92コメント読むにはコード読むのと同等以上のエネルギーが必要
0067デフォルトの名無しさん
2013/02/24(日) 13:28:05.050068デフォルトの名無しさん
2013/02/24(日) 13:37:40.180069デフォルトの名無しさん
2013/02/24(日) 13:41:44.830070デフォルトの名無しさん
2013/02/24(日) 13:47:57.19えっ?コメント日本語で書いてるの?ってのは冗談として
自然言語はプログラミング言語ほど最適化されていないし、曖昧な点が多いから
0071デフォルトの名無しさん
2013/02/24(日) 13:51:08.55コメントはメンテしなくても
書いてあるコードの通りに動くからタチが悪いだろ
0072デフォルトの名無しさん
2013/02/24(日) 15:02:23.29価値観?
世間の動向とか興味ない人なの?
0073デフォルトの名無しさん
2013/02/24(日) 16:31:57.13人生相談がしたいならスレ違い
0074デフォルトの名無しさん
2013/02/24(日) 16:49:39.79int main()
{
return 0;
}
のreturn 0;の必要性がイマイチわからないです。あるサイトではこれがないとコパイル通らないそうですが、通りました。
例えば例外発生したときにそこでプログラムがとまってメモリを食っちゃうのを阻止する感じでしょうか
0075デフォルトの名無しさん
2013/02/24(日) 16:51:13.700076デフォルトの名無しさん
2013/02/24(日) 16:55:51.66必要ないなら書く必要はない
0077デフォルトの名無しさん
2013/02/24(日) 16:56:27.440078デフォルトの名無しさん
2013/02/24(日) 17:02:52.70using namespace std;
はできるだけ書かずにstd::cout, std::endlのように書いていったほうが良いと考えておkですか?
スタティックなインポート?に恐怖を感じます
0079デフォルトの名無しさん
2013/02/24(日) 17:03:45.25Cでも最新の仕様なら要らない
最新の仕様に対応していればだけど
0080デフォルトの名無しさん
2013/02/24(日) 17:05:59.80using namespace std; はなるべく書かない方がいい
解説書やら何かやらではスペースやら説明やらの都合上よく使われるが
こういうのなら悪くはない
namespace AAA {
using std::cout;
using std::endl;
int main() {
cout << "aaa" << endl;
}
} // namespace AAA
0081デフォルトの名無しさん
2013/02/24(日) 17:06:41.940082デフォルトの名無しさん
2013/02/24(日) 17:18:28.52そんな風にmain()関数を囲い込む方法もあるんですね。今自分で、
AAA::main();
とよんでみたら確かに通りました。
ありがとうございます。
0083デフォルトの名無しさん
2013/02/24(日) 17:22:24.68main は名前空間に含んじゃいけないな
こういうことで
namespace AAA {
using std::cout;
using std::endl;
void foo() {
cout << "aaa" << endl;
}
} // namespace AAA
int main() {
AAA::foo();
}
0084デフォルトの名無しさん
2013/02/24(日) 17:24:38.270085デフォルトの名無しさん
2013/02/24(日) 17:27:12.22mainはグローバル名前空間内で定義する必要がある
using namespace std; は色々問題があるけど
グローバルでない名前空間内で std::cout, std::endl などを個別で using するのは割と安全
というものの例を上げようとしたら
間違って main も名前空間内に入れてしまっただけ
0086デフォルトの名無しさん
2013/02/24(日) 18:52:46.09return だからって、制御返すのと戻り値をまじちゃってるよね。
制御構文として return を書かないなら綺麗になるかなかな?
0087デフォルトの名無しさん
2013/02/24(日) 18:57:35.480088デフォルトの名無しさん
2013/02/24(日) 19:46:09.42価値観とか人生相談とか…
要するに論理的な話はできないと言うことね、了解した。
0089デフォルトの名無しさん
2013/02/24(日) 20:14:49.91途中returnが駄目で途中breakがOKな理由がよくわからないね、あれだ、ダブルスタンダードってやつか?
0090デフォルトの名無しさん
2013/02/24(日) 20:15:41.38コメントって怏々にしてメンテがゆきとどかず、実体の真逆を記述していることもおおいよね
コメントを頼りにするのは馬鹿
0091デフォルトの名無しさん
2013/02/24(日) 20:26:55.910092デフォルトの名無しさん
2013/02/24(日) 20:41:08.08同一人物だと思い込んだ理由はなんだろね
009386
2013/02/24(日) 20:58:33.41そのときに戻り値が設定されてればいいわけで、
戻り値返すついでに制御も返しちゃいけないと思うんです。
スレちだけど、言い出しっぺなので。
>>21 の質問は、何らかの数が 0 なら処理しなくて良い or するなって意味で、
0 で return させたのです。
でも 0 で無いなら処理しろにして、0の場合でもそのまま関数抜けていただいたほうが、
御社にとってもとかったのではないかと。思った次第。
0094デフォルトの名無しさん
2013/02/24(日) 21:04:37.71やってて面白い分野が見つかればよいのですが。C++ならではのAPIとかあれば教えてください。
0095デフォルトの名無しさん
2013/02/24(日) 21:07:32.280096デフォルトの名無しさん
2013/02/24(日) 21:08:19.330097デフォルトの名無しさん
2013/02/24(日) 21:09:51.57自分もそれを第一に考えたのですがウィンドウ作る所でいやになりました。
もっとC++言語としてまとまったAPIdocumentがあればよいのにないですよね?
0098デフォルトの名無しさん
2013/02/24(日) 21:10:03.730099デフォルトの名無しさん
2013/02/24(日) 21:10:32.940100デフォルトの名無しさん
2013/02/24(日) 21:14:19.77テキストベースでゲーム作ればいいじゃん
0101デフォルトの名無しさん
2013/02/24(日) 21:15:04.09■ このスレッドは過去ログ倉庫に格納されています