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


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

C++相談室 part123



1 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 16:36:27.08 ID:jZESqUY+.net]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part122
peace.2ch.net/test/read.cgi/tech/1453557975/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.97【環境依存OK】
peace.2ch.net/test/read.cgi/tech/1439849418/

■長いソースを貼るときはここへ。■
 codepad.org/
 ideone.com/

512 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 10:31:56.68 ID:LEkWD+7J.net]
メンバポインタで仮想関数を呼び出すとき、基底クラスの関数を指定ってできますか?
struct hoge { virtual void hage() { } };
struct fuga : hoge { void hage() { } };
void (hoge::*hogo)() = &hoge::hage;
fuga hege;
(hege.*hogo)(); //fuga::hageじゃなくhoge::hageにしたい

513 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 10:56:19.75 ID:GrZPafJv.net]
>>512
出来ない

514 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 11:01:24.81 ID:d4s8z5nU.net]
そもそもメンバポインタなんてものは使うな

515 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 14:32:18.80 ID:LEkWD+7J.net]
>>513
thx
情報密度の高いわずか4文字、その次の真空とは格段に違いますね。

516 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 00:36:19.09 ID:CsN4wd4t.net]
newとか書くのは老害なんですかね?
今日若いもんに指摘されたんだけども
make_hogehogeとか書いたほうがよいのでしょうか?
老害脱却してナウくてミニマルなコード書きたい

517 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 00:41:36.09 ID:9Xk0G6q+.net]
指摘したやつに聞いてこいよ
というか指摘されたときにちゃんと理由聞いとけよ

518 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 01:42:21.09 ID:019JwaRF.net]
deleteしわすれるマヌケなコードでなければ使ってもいいが

519 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 02:15:40.78 ID:lQwaLUOO.net]
>>500
上段より下段が時系列的に後
右辺より左辺が時系列的に後
そんなカスケード的概念が根底にある
BASICに行番号が有った頃と何も変わらない

左辺が変数のみなら代入を意味する
左辺が数式なら数式と扱う
どの辺がオブジェクト指向か知らない
ポリモーフィズムとかカプセル化も関係ない

多分、生物は前を向く、みたいな本能に根差した定義が隠れている

520 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 08:13:12.75 ID:xZz5tDVg.net]
>左辺が変数のみなら代入を意味する
>左辺が数式なら数式と扱う

という妄想でした
(c1 ? gr() : fr()) = 100 ;



521 名前:デフォルトの名無しさん [2016/03/24(木) 08:24:49.44 ID:Nz54sUCC.net]
それを言うなら
*pt = 100;
でしょ

A=100;のAもC++では左辺値という式で
変数とか数式とかいう言葉遣いは行番号BASICの話だろ

522 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 08:47:03.11 ID:RWWxbY4p.net]
>>516
スマートポインタを調べておいで

523 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 08:50:35.73 ID:4NO08lYx.net]
俺は数値型はmallocしか使わない

524 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 09:04:10.19 ID:wWfOqsS1.net]
なぜcallocを使わないのか
謎である

525 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 11:15:22.83 ID:biS/7wG3.net]
callocではポインタを初期化出来ないから

526 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 11:17:02.82 ID:biS/7wG3.net]
ああ、数値型限定か。取り下げ。

527 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 12:08:43.62 ID:ZS8UeVhQ.net]
>>516
そう書く以上ある程度は知ってるんでしょ?
まず使ってみて判断すりゃいい。

528 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 14:24:41.64 ID:aFiY6vgp.net]
スマポのデメリットって、
ちょっと記述が長いくらい?

529 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 15:53:26.47 ID:eZePobDJ.net]
そもそもC++において記述量はものの数に入らない。注意はゼロオーバーヘッドに向いている

530 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 16:10:53.13 ID:aFiY6vgp.net]
まあ、そうなんだけどね

もしC++の開発当初からスマポの概念が存在してたとしたら
もうちょっとシンプルなキーワードになってたのかなと思わなくはない



531 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 16:32:37.90 ID:5JBRPHnG.net]
スマポ使って記述量増えるか?delete書かなくていいんだし、例外安全なコード書くこと考えたらスマポ使わないと大変な記述量になるぞ

532 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 16:40:18.89 ID:YciTCaLR.net]
C++とOpenGLで大量のデータ(といっても1ファイル数MBのバイナリファイル)を表示するグラフを作ったんだが
ファイルを次々読んでいくと不正落ちするんだが
タスクマネージャを見る限りメモリリークはしてないっぽいんだが
原因はなんだろう?
エスパーさん助けて

533 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 16:47:29.18 ID:YnxOCpos.net]
>>532
フツーにVC++でデバッグしろや

534 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 16:56:15.84 ID:aFiY6vgp.net]
>>531
あくまで宣言時の話ね
安全かどうかはとりあえず置いとく

535 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 17:11:05.46 ID:YciTCaLR.net]
>>533
そういやそうやね
デバッグしたときの思い出したけどメモリのアクセスの違反とかやったかな
ただどこのメモリアクセスかだとかてんで絞り込めなかった記憶が蘇ってきた

536 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 17:11:55.85 ID:bJRa7hQW.net]
スマポは宣言したことないなあ

537 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 18:19:30.58 ID:GuX4g1Aq.net]
class POINT{
int x, y;

POINT(int x, int y){
this.x = x;
this.y = y;
}
};

式にはクラス型が必要です。とエラー出る。
Javaだとこの書き方で来たと思うんだけどどうれば?

538 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 18:20:23.26 ID:HU0hrWcK.net]
this.x

this->x

539 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 19:05:20.17 ID:4ybpt3lE.net]
コンストラクタ内はthis未定。

540 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 19:16:58.07 ID:xZz5tDVg.net]
なにをいっているんだこのばかは



541 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 19:17:43.17 ID:CKYJRfTx.net]
>>537
class POINT{
  int x_, y_;

  POINT(int x, int y)
    : x_(x), y_(y)
  {}
};

542 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 22:26:04.65 ID:zkjgNnUp.net]
>>541はアスペ

543 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 22:39:30.65 ID:f7qbbkg+.net]
>>541
class POINT{
  int x_, y_;
public:
  POINT(int x, int y)
    : x_(x), y_(y)
  {}
};

544 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 23:04:36.81 ID:3G6+DDFH.net]
>>510
struct hoge{
std::string s;
hoge() = default;
hoge(hoge &&) = default;
hoge(hoge const &) = default;
};
struct hoge{
std::string s;
hoge(hoge &&baka) : s{std::move(baka.s)} {}
};

545 名前:デフォルトの名無しさん [2016/03/24(木) 23:49:09.31 ID:zWmpvvy2.net]
>>535
clangやgccならAddressSanitizerでバッファーオーバーフローしたタイミングで止めてコールスタックを表示できるし、
解放済みメモリへアクセスしたときもそのアドレスを解放した箇所のコールスタック表示できる。

546 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 00:38:22.72 ID:+Ze54dSh.net]
でもOpenGLのデバッグはつらいね。
OpenGLの使い方間違え落ちると呼び出し元がわからんことが多いし。

547 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 00:52:21.56 ID:UpbiIEYU.net]
>>537
class POINT{
  int x, y;
  POINT(int x_, int y_)
    : x(x_), y(y_) {}
};
だろ

548 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 00:53:38.91 ID:UpbiIEYU.net]
>>537
ていうか
class POINT{
public:
  int x, y;
  POINT(int x_, int y_)
    : x(x_), y(y_) {}
};
しておかないとコンストラクタ呼べんよ

549 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 00:58:19.08 ID:BMGk8TKa.net]
>>548 そのアンダースコア要らない。

550 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 01:05:01.92 ID:UpbiIEYU.net]
でもわかりにくいだろ?



551 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 01:09:41.99 ID:OQH/xHTw.net]
>>548であれば明確で分かりやすいから要らない

552 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 01:16:51.01 ID:ea+R8FSN.net]
後ろアンダーラインカコワルイ

553 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 02:09:13.34 ID:9WnSpcyZ.net]
だよね。引数を後ろアンダースコアにするの俺も昔やってたことあるけどカッコ悪すぎるのでもう止めた
メンバ変数は前アンダースコア、引数にはアンダースコア付けないで落ち着いた
後ろアンダースコアって何であんなにカッコ悪いんだろ?m_よりはマシだと思うが

554 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 02:58:29.24 ID:7ath5rIc.net]
変数命名で思い出したけど、いろんな様式あるよねキャメルケースとかスネークケースとかそういうの

どれが流行ってるとか一般的にどうあるべきとかいう一般論あるの?

555 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 03:08:18.87 ID:cXdBDF9l.net]
前アンダーが処理系予約と知らずに使う方がもっとカッコ悪い

556 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 03:11:49.84 ID:UodAUCRU.net]
それぞれの流儀で決まる
コーディング規約を守るために努力すんのは無駄極まりないからGoogleの規約基準にしていいと思うけど
さすがにiとかbは消えたけどm_とg_はたまに見かける

557 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 03:19:28.56 ID:9WnSpcyZ.net]
>>555
規格ちゃんと読んだか?
前アンダースコアが予約されてる条件を理解してるか?
メンバ変数の前アンダースコアは合法だってことを知ってるか?

558 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 03:58:43.82 ID:F3D1y9dC.net]
法典を示せよ

559 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 04:05:28.83 ID:cXdBDF9l.net]
>>557
マクロはCの制約を適用しなければいけない
必然的に前アンダーは使ってはいけない

560 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 04:16:26.20 ID:9WnSpcyZ.net]
何言ってるんだか
規格を見るのが一番だが、この辺りでも見て自分の頭で考えてね
https://msdn.microsoft.com/ja-jp/library/cc440188%28v=vs.71%29.aspx

_大文字始まりは主にマクロのために全てのスコープで予約されてるが、_小文字始まりはグローバルスコープ以外では合法
これくらいのルールが分からないようじゃプログラマ失格だぞ
法典を示せ?テメエで調べろよ怠け者



561 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 05:55:20.56 ID:Agsep6u6.net]
「_大文字で始まる名前、_小文字で始まる名前は
ここでは許される、ここでは許されない」みたいな部分で
規格のギリギリを突くような書き方が好ましいとは思わないけどね。

場面によらずアンダースコアで始まる名前は一切つけない、
という方針も安全策としてありうるかと。

せいぜい複数人で開発しているときに、
「このメンバ名、_で始まってるけどいいんだっけ?」
「この場合は許されてるんですよ。予約されてるのは…
(しばらく薀蓄タイム)…というわけなのです」
「ふぅん、そうか。要するに問題ないのね」
という会話が生じる程度のネタでしょ。

562 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 06:13:55.38 ID:9WnSpcyZ.net]
ギリギリでもなんでもなく明確に合法なんだが
それにネタ程度の話なんかじゃなくて、メンバ変数を_小文字始まりに統一するとIDEで_を入力するとメンバ変数の一覧が出てきてメッチャ捗るという現実的な恩恵がある
C#では奨励されているスタイルだし、C++とC#を同じくらいやる俺にとってはもうこのスタイルで統一するのがベストという結論

563 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 06:40:08.87 ID:i3XIX2iS.net]
まったくだ

564 名前:デフォルトの名無しさん [2016/03/25(金) 06:52:38.28 ID:MISdMFxz.net]
>>562
どこで奨励されてるの?

https://msdn.microsoft.com/ja-jp/library/ms229045(v=vs.100).aspx
ここには使うなって書いてあるけど

565 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 07:06:04.17 ID:ACUGT+cL.net]
this付ける派閥には一切恩恵がないや…

566 名前:デフォルトの名無しさん [2016/03/25(金) 07:35:12.73 ID:bT5/u8Kc.net]
前アンダースコアはないわ

567 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 07:48:56.52 ID:i3XIX2iS.net]
>>564
そんな不適切なページ

568 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 08:10:52.98 ID:cXdBDF9l.net]
C++ではグローバルネームだけが前アンスコ予約となってる
Cとの共存に考えがいたらないまま、
>>557
>規格ちゃんと読んだか?
と言ってしまい、引っこみがつかなくなり発狂中

569 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 08:14:22.84 ID:+Ze54dSh.net]
スレタイ

570 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 08:16:09.34 ID:i3XIX2iS.net]
大文字と小文字の区別がつかない人間か



571 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 08:25:16.24 ID:cXdBDF9l.net]
>>569
Cのヘッダーを全くインクルードしなけりゃ良いよ
そんなの学校の宿題くらいしか無いけどね

572 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 08:29:34.02 ID:UodAUCRU.net]
動けば何をやってもいいのがC++だぞ

573 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 08:33:00.37 ID:TW5rwKlv.net]
>>541です
物議を醸すようなコードを晒してすみません
個人的には前アンスコでも後アンスコでもいいと思います
同じでプロジェクト単位で統一されていることが重要と思っていてC++としてどちらがいいとかはないと思ってます

574 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 09:11:07.81 ID:+Ze54dSh.net]
素のCヘッダなんて、どうしてもCのライブラリを使いたい場合くらいしか使わんなぁ。
C/C++共用のヘッダじゃなきゃ自分でextern "C"することになるから、そのときに
両方の規格を気にするくらいで。
そもそも、自前のcppコードでメンバにアンダースコア使う話とCヘッダのインクルードが
どう関係あるのか意味不明。

575 名前:535 mailto:sage [2016/03/25(金) 09:21:42.75 ID:qvYXoatK.net]
>>545
だいたい数十ファイル(ばらつき)を読み込んだあたりで突然落ちて
最初はメモリリークを疑ったからかなり明示的にメモリの解放を頻繁に行うようにした
でもやっぱり症状変わらなかった
解放済みメモリへのアクセスもあるかなって思ったけどようわからんかったけど
もうちょい頑張ってみる

>>546
OpenGLとかコードをパクりまくってつぎはぎだらけでなんとか表示させてるからあんまり意味わかってなくてつらい部分は確かにある
このOpenGLあたりでグラフィックメモリがパンクしてんのかとも思ってコード内でグラフィックの使用量吐き出させたりフリーソフトで監視したけどそんなにメモリが増大していってる感じじゃなかったな

576 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 09:37:39.50 ID:KBRwIVst.net]
あれ?これ合法だっけ?ってなる時点で紛らわしいので避けるかな
だったら前this か m_ の方がマシ

577 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 10:22:53.41 ID:AP4XabWz.net]
>>559
classのメンバ変数弄るならInline関数使うべきだろ。
そこ触るのにcとの互換性考慮する必要なくね?

578 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 11:19:19.06 ID:9WnSpcyZ.net]
StyleCop死ねwww
stylecop.codeplex.com/wikipage?title=A%20Brief%20History%20of%20CSharp%20Style&referringTitle=Documentation

579 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 11:27:57.09 ID:9WnSpcyZ.net]
前thisなんてルール作ったところで
this付けなくてもエラーにもなんにもならないしルール違反コード探すのだって容易じゃない
そんなの全く意味ないんだよこのクソバカStyleCop

580 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 15:47:57.54 ID:ACUGT+cL.net]
_fooでもm_barでもthis.bazでも
それを強制されるのなら、コーディング規約としては大して変わらん気がするなあ



581 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 16:01:49.59 ID:ACUGT+cL.net]
あ、ごめん。this.じゃねぇ

582 名前:片山博文MZ ◆T6xkBnTXz7B0 [2016/03/25(金) 17:02:16.92 ID:C4e13KV/.net]
アンパンマン、新しい顔ができたよ!!!

Unboost --- Time to say good-bye to Boost
https://github.com/katahiromz/unboost

583 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 17:22:36.13 ID:ZbElIMvp.net]
g_とかm_とかクッソ気持ち悪い

584 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 17:55:35.65 ID:uQE9fwFQ.net]
前アンスコが一番素敵だワ

585 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 18:09:09.53 ID:i3XIX2iS.net]
_そ_う_お_も_う_

586 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 18:12:39.86 ID:i3XIX2iS.net]
しかし_を入力するとメンバ一覧が出てきて捗るなどという考えは皆無だな

587 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 18:24:41.23 ID:uQE9fwFQ.net]
>>586
ん?便利と思うよ。mでも何でもいいけど。
逆に不便なのが、IDEのコンストラクタやsetter/getter自動生成機能で_やmが関数名や仮引数名についちゃうところ。

588 名前:デフォルトの名無しさん [2016/03/25(金) 20:17:21.95 ID:CiUv48rG.net]
アンダースコアで始まる識別子がたくさん出てくるだけじゃあ






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

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

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