X



C++相談室 part131 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 3b96-ov1m)
垢版 |
2017/07/29(土) 11:28:28.97ID:o30VDF4g0
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part130
http://mevius.2ch.net/test/read.cgi/tech/1490917669/

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

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

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0003デフォルトの名無しさん (ワッチョイ 6a90-qWRz)
垢版 |
2017/07/29(土) 12:46:26.94ID:Gw88XuqA0
2 名前:デフォルトの名無しさん (ワッチョイ bf54-lR6P)[sage] 投稿日:2017/03/31(金) 16:52:18.52 ID:CoeIAoH10
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

---- テンプレ ここまで ----
0005デフォルトの名無しさん (ワッチョイ 738e-PRKf)
垢版 |
2017/07/29(土) 17:57:29.77ID:mj0H/MXI0
>>1
乙TL
0008デフォルトの名無しさん (ワッチョイ 3bb4-749T)
垢版 |
2017/07/30(日) 06:50:23.38ID:qWNYkf/a0
やめとけやめとけ
Cでリスト構造あたりがすらすら書けるようになったならC#にしとけ。

生産性あがらずそっぽ向かれてるのに、
ムーブコンストラクタとか、コード増えて、さらに生産性低下。
完全にオナニー規格で、自分でとどめ刺した。
まるで民進党の蓮ポ
0013デフォルトの名無しさん (ワッチョイ 3bb4-749T)
垢版 |
2017/07/30(日) 10:57:13.10ID:qWNYkf/a0
プログラミング言語C++と言いたいところだが、C++11で止まってるとこらがもうね。
vol3まで原書と邦訳つきあってきたけど、もう気力も失せたわ。
可能性を期待してたの90年代前半 ANSI時代までだな。
電話帳より分厚い言語解説本て。多分完全理解した頃エンジニア生命終わってるわ
0014デフォルトの名無しさん (ワッチョイ 6a9f-ns/O)
垢版 |
2017/07/30(日) 11:11:05.70ID:HMlHttTQ0
最新の情報はテメェで調べりゃいいんでねぇの?
まず基本という基礎固めが重要だろ
Cプログラマでやってきた奴に総てを全うさせるのは荷がおもすぎるだろ
0024デフォルトの名無しさん (ワッチョイ 7357-PRKf)
垢版 |
2017/08/02(水) 08:31:16.93ID:j5kUV6O90
でもC/C++は互換性をかなり重視してくれているから、時系列に沿って勉強しても無駄ではない気がする。
っていうか、いきなりC++14勉強するのは辛いんじゃねって気がする。
0028デフォルトの名無しさん (ワッチョイ a311-lyvM)
垢版 |
2017/08/02(水) 11:37:56.91ID:Mxrfj49o0
Effective C++ 第3版持っている人に質問
33項に書いてある「仕事を送る関数」なんだが
private継承しているのに、なんで派生クラスで基底クラスの関数を呼び出せるの?
inline関数ってところが関係しているのだろうか
0036はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2a15-ZO1u)
垢版 |
2017/08/02(水) 23:32:57.07ID:84D7BovY0
>>34
private 継承している場合は基底にキャストできない。
スライシングを起こしたくない場合には private 継承した上で
一部のメンバを using で公開するというようなテクニックもある。
0041デフォルトの名無しさん (ブーイモ MMc1-mf2b)
垢版 |
2017/08/03(木) 12:34:54.88ID:NztkOdZ3M
セマンティクス的には、
public継承はis-a関係
private継承はhas-a関係
0048デフォルトの名無しさん (アウアウエー Sa2b-690I)
垢版 |
2017/08/06(日) 11:38:12.92ID:57DyNeACa
>>46
あなたのその文字も立派な個人資産。
ここに書いた瞬間2chに帰属するが。
0052デフォルトの名無しさん (ワッチョイ 49ad-mf2b)
垢版 |
2017/08/06(日) 20:55:29.92ID:BHhmDaJC0
>>50
privateをpublicでdefineするやつじゃ?
0058デフォルトの名無しさん (オッペケ Sr35-6sbn)
垢版 |
2017/08/08(火) 08:21:06.59ID:RV4q7wpsr
>>57
うむ、こんなところだろう
1.既存のクラスに普通に手入れている
2.それは違うと>>53で言っているのに投下されるアスペなレス
3.privateな変数にアクセスするかと思いきや、privateな変数を出力するprivateな関数を呼び出すという意味の無い構成
4.deleteを使用するUNKOなコード
5.newを使用する残念なコード
6.コードへのリンクを投下するのでなくクソスレを経由するクソレス
7.例外安全でない
8.非staticにする必要性が感じられない
9.「(hoge->*(hoge->g()))();」というブザマな呼び出し方
0061C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ (ラクッペ MMaf-bbbG)
垢版 |
2017/08/09(水) 18:43:38.11ID:s1XZJ5NhM
読んでないけどg()は関数ポインタを返す関数?
設計からしてダメだろ
0066デフォルトの名無しさん (ワッチョイ 9ac5-OW3C)
垢版 |
2017/08/11(金) 13:08:18.43ID:rA3728Ge0
C++の場合クラス(およびその基底クラス)内のメンバは全部ヘッダファイルを辿っていけばワカルのだから
まず全く同じ内容のヘッダファイルのコピーを作り、
ファイル名を適当に変えて、多重インクルード箇所もコピーしたもので閉じるように変更して、
privateやprotectedを全部publicにして、
クラスの名前をFoo→Foo2とか改変して、
仮想関数は適当に空の定義でもつけて、
 ((Foo2*)p)->(Fooのデータメンバ)
式にキャストしてアクセスすればデータメンバと仮想関数については問題なくアクセスできる

(ODR違反は都市伝説なので事実上これで動く
 だいたいprivate破りを意図している時点で実コードレベルで影響しない規約とか気にしても仕方が無い
0067デフォルトの名無しさん (ワッチョイ 9ac5-OW3C)
垢版 |
2017/08/11(金) 13:10:51.21ID:rA3728Ge0
Foo2の仮想関数が空ではないか、というのは動作上問題にならない
vtableのしくみがわかっているならワカル以下略

一方非仮想関数の方はちょっとうまい方法が思いつかない…
private属性のメンバ関数のアドレスがとれれば勝つるのだが
0068デフォルトの名無しさん (ワッチョイ 5b2b-7NHe)
垢版 |
2017/08/11(金) 15:28:00.96ID:CTzRRQx/0
class Base {
public:
Base() {};
virtual void func() {};
};

class Sub: public Base {
public:
Sub() {};
virtual void func() {};
};

Sub a();
std::vector<Base> b;
b.push_back(a);
b[0].func();
これだと継承前のBaseのfuncが実行されてSubのfuncが実行されないんですが
Subのfuncを実行するにはどうしたらいいですか
0070デフォルトの名無しさん (ワッチョイ 1a49-d9WE)
垢版 |
2017/08/11(金) 15:47:46.79ID:L0uHlCp20
>>68
そのコード本当に動く?
本質じゃなくて申し訳ないが、そのまま追試出来るコードじゃないと…

ちなみに質問の回答はスライスな。
0072デフォルトの名無しさん (ワッチョイ 1a49-d9WE)
垢版 |
2017/08/11(金) 16:00:31.30ID:L0uHlCp20
コピコンは省略可能だよー。
0084デフォルトの名無しさん (ワッチョイ 7665-KsLg)
垢版 |
2017/08/12(土) 16:56:14.99ID:srjAo6Ap0
質問です。

宣言は、全ての要素に対して必要なのですか?

n = a+b:

という行があるとすると、

#include <n>
#include <a>
#include <b>

が必要なのですか?
とても初心者なので、なにとぞ教えてください。
お願いします。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況