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


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

C++相談室 part131



1 名前:デフォルトの名無しさん(ワッチョイ 3b96-ov1m) mailto:sage [2017/07/29(土) 11:28:28.97 ID:o30VDF4g0.net]
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

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

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

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

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

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

2 名前:デフォルトの名無しさん (ワッチョイ 3796-ov1m) mailto:sage [2017/07/29(土) 11:31:44.83 ID:o30VDF4g0.net]
C/C++室のURLはこちらが正しいです。ごめんなさい。
【初心者歓迎】C/C++室 Ver.101【環境依存OK】 [無断転載禁止]©2ch.net
mevius.2ch.net/test/read.cgi/tech/1500329247/

3 名前:デフォルトの名無しさん (ワッチョイ 6a90-qWRz) mailto:sage [2017/07/29(土) 12:46:26.94 ID:Gw88XuqA0.net]
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>
後死ね。

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

---- テンプレ ここまで ----

4 名前:デフォルトの名無しさん (ワッチョイ f396-ZO1u) mailto:sage [2017/07/29(土) 17:38:08.78 ID:O6R2q/bm0.net]
うむごくろう

5 名前:デフォルトの名無しさん (ワッチョイ 738e-PRKf) [2017/07/29(土) 17:57:29.77 ID:mj0H/MXI0.net]
>>1
乙TL

6 名前:デフォルトの名無しさん (オッペケ Srb3-Ibwl) mailto:sage [2017/07/29(土) 22:23:56.70 ID:E0esoNX5r.net]
日付がミスリーディングなクソレスを貼る>>3は無能

7 名前:デフォルトの名無しさん (スップ Sd2a-pcXC) mailto:sage [2017/07/30(日) 02:31:41.53 ID:xlcIQQjmd.net]
>>1

CからC++の学習に進もうと思ってるんだけど、皆さんオススメの書籍とかWebとか有ったら教えてちょ

8 名前:デフォルトの名無しさん (ワッチョイ 3bb4-749T) mailto:sage [2017/07/30(日) 06:50:23.38 ID:qWNYkf/a0.net]
やめとけやめとけ
Cでリスト構造あたりがすらすら書けるようになったならC#にしとけ。

生産性あがらずそっぽ向かれてるのに、
ムーブコンストラクタとか、コード増えて、さらに生産性低下。
完全にオナニー規格で、自分でとどめ刺した。
まるで民進党の蓮ポ

9 名前:デフォルトの名無しさん (ワッチョイ 3bb4-749T) mailto:sage [2017/07/30(日) 07:41:41.24 ID:qWNYkf/a0.net]
>>7
https://is.muni.cz/www/408176/38744863/The_C__Programming_Language__Stroustrup_.pdf
freepdf-books.com/download/?file=4620
www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf
www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4296.pdf

https://msdn.microsoft.com/ja-jp/library/hh567368.aspx

10 名前:デフォルトの名無しさん (ワッチョイ 3bb4-749T) mailto:sage [2017/07/30(日) 07:46:18.32 ID:qWNYkf/a0.net]
11と14のドラフトあげてしもた
Straustrap 4thと14でいいと思う
www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3690.pdf



11 名前:デフォルトの名無しさん (スップ Sd8a-pcXC) mailto:sage [2017/07/30(日) 10:19:14.54 ID:tzTloLFVd.net]
ツンデレID:qWNYkf/a0さんありがとw
だがしかし、原文のまま進めるには10倍くらい労力使いそうなんで、出来たら日本語でお願いします!

12 名前:デフォルトの名無しさん (ワッチョイ 6a9f-ns/O) mailto:sage [2017/07/30(日) 10:30:55.09 ID:HMlHttTQ0.net]
CプログラマのためのC++入門って本が解りやすかった

13 名前:デフォルトの名無しさん (ワッチョイ 3bb4-749T) mailto:sage [2017/07/30(日) 10:57:13.10 ID:qWNYkf/a0.net]
プログラミング言語C++と言いたいところだが、C++11で止まってるとこらがもうね。
vol3まで原書と邦訳つきあってきたけど、もう気力も失せたわ。
可能性を期待してたの90年代前半 ANSI時代までだな。
電話帳より分厚い言語解説本て。多分完全理解した頃エンジニア生命終わってるわ

14 名前:デフォルトの名無しさん (ワッチョイ 6a9f-ns/O) mailto:sage [2017/07/30(日) 11:11:05.70 ID:HMlHttTQ0.net]
最新の情報はテメェで調べりゃいいんでねぇの?
まず基本という基礎固めが重要だろ
Cプログラマでやってきた奴に総てを全うさせるのは荷がおもすぎるだろ

15 名前:デフォルトの名無しさん (ワッチョイ 3b11-Ibwl) mailto:sage [2017/07/30(日) 12:15:54.41 ID:Csv1BA330.net]
今から学ぼうとする人に規格のドラフトとかどんな苦行だよ
やっぱりロベールしかないな

16 名前:デフォルトの名無しさん (スップ Sd8a-pcXC) mailto:sage [2017/07/30(日) 12:20:04.23 ID:tzTloLFVd.net]
( ̄▽ ̄;)

17 名前:デフォルトの名無しさん (ワッチョイ 6a9f-ns/O) mailto:sage [2017/07/30(日) 12:26:14.76 ID:HMlHttTQ0.net]
www.saiensu.co.jp/?page=book_details&ISBN=ISBN4-7819-0649-4
みっけた。コレだわ。
コレ読んだあとにSTLの分厚いの読むと解りやすかった。

18 名前:デフォルトの名無しさん (ワッチョイ 7b7f-V1Wy) mailto:sage [2017/07/30(日) 12:30:36.64 ID:IhAKIxVt0.net]
サイエンス社ってそんなドメインだったんだw

19 名前:デフォルトの名無しさん (ドコグロ MM22-gqKx) mailto:sage [2017/07/30(日) 12:59:03.24 ID:Y5XJTDyYM.net]
コピーライト表記が SAIENSU-SHA Co., Ltd. だからね

20 名前:デフォルトの名無しさん (ワッチョイ 97e3-ZO1u) mailto:sage [2017/07/30(日) 13:30:09.73 ID:QmN4gyGx0.net]
正しい綴りにすると、別の企業サイトに行ってしまった



21 名前:デフォルトの名無しさん (ワッチョイ 2a15-ZO1u) mailto:sage [2017/07/30(日) 13:33:44.51 ID:NhWYDB7J0.net]
>>7
「詳説C++ 第2版」がオススメ
amzn.asia/fb29pvT
ただ、 C++03 を前提にした範囲のことしか書いてない (出版年が 2005 年だから仕方がないけど) ので、
差分はウェブ上のリファレンスで補うと良し。
https://cpprefjp.github.io/

22 名前:デフォルトの名無しさん (スップ Sd8a-pcXC) mailto:sage [2017/07/30(日) 14:30:07.95 ID:tzTloLFVd.net]
>>17
>>21
なるほど。
どちらも古そうな本ですが、参考にさせていただきます。有難う御座いました。

23 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 05:09:58.76 ID:QkMqJWKd0.net]
>>17
一から勉強する初心者に、
使いにくいだけの過去規格の遺物勧めて何したいんだ。
C++1xとANSI時代のC++は別物だ

24 名前:デフォルトの名無しさん [2017/08/02(水) 08:31:16.93 ID:j5kUV6O90.net]
でもC/C++は互換性をかなり重視してくれているから、時系列に沿って勉強しても無駄ではない気がする。
っていうか、いきなりC++14勉強するのは辛いんじゃねって気がする。

25 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 09:22:34.98 ID:dMb9Yx4tM.net]
便利機能無しで学習するのはストレス溜まる。
わざわざそんな縛りプレーすることないわ。

26 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 09:30:57.66 ID:TRQYVkPNd.net]
常識とされていたことも変化しているからね

27 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 10:47:19.91 ID:5aiRdv7G0.net]
便利過ぎても自活力落ちるけどな

28 名前:デフォルトの名無しさん [2017/08/02(水) 11:37:56.91 ID:Mxrfj49o0.net]
Effective C++ 第3版持っている人に質問
33項に書いてある「仕事を送る関数」なんだが
private継承しているのに、なんで派生クラスで基底クラスの関数を呼び出せるの?
inline関数ってところが関係しているのだろうか

29 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 11:39:16.93 ID:Mxrfj49o0.net]
ごめん補足
質問の箇所は33項 p.169ね
よろしくお願いします

30 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 12:22:32.52 ID:SX9kgwib0.net]
なんでもなにもprivate継承した基底クラスのpublicメンバは
派生クラスのprivateメンバ的扱いになるので
派生クラスの中では自由にアクセスできる



31 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 15:29:32.86 ID:Mxrfj49o0.net]
>>30
マジか……恥ずかしながらそんな基本的なこともわかってなかった
ありがとうございます

32 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 19:58:27.29 ID:uVXFZ8FT0.net]
穴を掘って入ろう

33 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 23:27:31.39 ID:mLUoAaJZM.net]
private基底とメンバ変数、機能的な違いはあるのかしらん?

34 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 23:30:18.47 ID:wZt34zOG0.net]
俺もprivateとpublicって積的関係かと思ってた
private継承とか使わんからな

35 名前:はちみつ餃子 mailto:sage [2017/08/02(水) 23:30:19.78 ID:84D7BovY0.net]
基底クラスへは問答無用でキャストできる。

36 名前:はちみつ餃子 mailto:sage [2017/08/02(水) 23:32:57.07 ID:84D7BovY0.net]
>>34
private 継承している場合は基底にキャストできない。
スライシングを起こしたくない場合には private 継承した上で
一部のメンバを using で公開するというようなテクニックもある。

37 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 23:34:00.01 ID:mLUoAaJZM.net]
おお、スライシング問題抱える訳ですな。使わないのが無難か……

38 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 23:40:10.88 ID:mLUoAaJZM.net]
あ、キャストできないが正解か。
private基底は実装を楽する手段かね。

39 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 23:42:51.57 ID:wZt34zOG0.net]
つまり例えばstd::vectorクラスを継承したクラスを作って
間違ってアップキャスト扠せたくない場合なんかに使うイメージか

40 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 01:39:28.66 ID:3NxHKcnN0.net]
vector自身をprivateにしたい場合はprivate継承
vectorのメンバを露出させたい場合はprotected継承



41 名前:デフォルトの名無しさん [2017/08/03(木) 12:34:54.88 ID:NztkOdZ3M.net]
セマンティクス的には、
public継承はis-a関係
private継承はhas-a関係

42 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 12:53:23.95 ID:tXFHDIDud.net]
外から見たら、ね

43 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 22:13:12.27 ID:YAnw1OKB0.net]
リンゴとパイナップルとペンが入ったフルーツバスケットは
リンゴクラスとパイナップルクラスとペンクラスの多重private継承なんや

44 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 23:30:18.50 ID:W4109686r.net]
「private継承」とい言葉を見るとC++17ドラフトのUNKOなライブラリ設計しか思い浮かばない

45 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 06:26:48.70 ID:IjGvtKjI0.net]
メンバも含めてprivateなものの用途を詮索してもしょうがない

46 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 08:18:04.82 ID:Oj6J0tUu0.net]
誰か個人資産をpublicで公開してくれないかなぁ

47 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 10:59:21.66 ID:q0G0ffZoM.net]
2000年頃貯めた資産なので引き出せる紙幣はコピーだがよいか?

48 名前:デフォルトの名無しさん [2017/08/06(日) 11:38:12.92 ID:57DyNeACa.net]
>>46
あなたのその文字も立派な個人資産。
ここに書いた瞬間2chに帰属するが。

49 名前:デフォルトの名無しさん mailto:sage [2017/08/06(日) 19:15:12.69 ID:/2i5R4CKr.net]
このスレのレスで資産と呼べるのは
PostMessageでメモリ不足を検知するノウハウと
プライベートメンバーをアクセスする技くらいのものだ

50 名前:デフォルトの名無しさん mailto:sage [2017/08/06(日) 19:28:38.68 ID:OFkcQ32C0.net]
>>49
>プライベートメンバーをアクセスする技くらいのものだ
え,それって private メンバのアドレスを返して外からアクセスするってやつ?



51 名前:デフォルトの名無しさん mailto:sage [2017/08/06(日) 19:31:25.78 ID:7dbJmn2Z0.net]
違うだろ
それにネタ元はここじゃないし

52 名前:デフォルトの名無しさん [2017/08/06(日) 20:55:29.92 ID:BHhmDaJC0.net]
>>50
privateをpublicでdefineするやつじゃ?

53 名前:デフォルトの名無しさん mailto:sage [2017/08/06(日) 21:20:19.11 ID:/2i5R4CKr.net]
>>50
微妙に違うような
アクセス制御が適用されない文脈でメンバーへのポインターやstatic変数のポインターを取得してアクセスする手法

54 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 16:40:58.08 ID:Y4YBisBB0.net]
>>50 >>53
mevius.2ch.net/test/read.cgi/tech/1434079972/22

55 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 22:34:19.58 ID:MakITfYKr.net]
privateをpublicでdefineするのは潔くてカッコいいが
>>54は全てが糞すぎる

56 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 22:43:25.92 ID:qpBf+1aM0.net]
しかも既存のクラスに普通に手入れてるしね

57 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 07:52:39.36 ID:CWtfXRt70.net]
>>55
具体的に

58 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 08:21:06.59 ID:RV4q7wpsr.net]
>>57
うむ、こんなところだろう
1.既存のクラスに普通に手入れている
2.それは違うと>>53で言っているのに投下されるアスペなレス
3.privateな変数にアクセスするかと思いきや、privateな変数を出力するprivateな関数を呼び出すという意味の無い構成
4.deleteを使用するUNKOなコード
5.newを使用する残念なコード
6.コードへのリンクを投下するのでなくクソスレを経由するクソレス
7.例外安全でない
8.非staticにする必要性が感じられない
9.「(hoge->*(hoge->g()))();」というブザマな呼び出し方

59 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 18:36:43.63 ID:UcwPIhci0.net]
>>58
https://ideone.com/Y4LPCV

改善:3, 4, 5, 6, 7
保留:1, 2, 8, 9

60 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 18:40:37.13 ID:hewgQardr.net]
いやそこは無視するだろ普通

>hoge.get()->*(hoge->g2()) = 54321;
もう何が何だか…



61 名前:C言語ますたー《ますたー軍団(常時募集)の長》 [2017/08/09(水) 18:43:38.11 ID:s1XZJ5NhM.net]
読んでないけどg()は関数ポインタを返す関数?
設計からしてダメだろ

62 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 18:53:35.78 ID:VsUePcYe0.net]
既存のクラスに手を入れてる時点でキモイ。
それならもっとやりようあるでしょ。

63 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 19:13:08.58 ID:UcwPIhci0.net]
>>61
メンバのオフセット(たぶん) ->* ::* 使用前提のやつ
>>59 は一箇所どうにもこうにもならないので放置している部分がある
ともかく笑いのネタというより他にない

64 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 10:59:10.70 ID:vqPWBCRZr.net]
>>63
遠慮せずともじゃんじゃんプライベートにアクセスしてよいぞ
ideone.com/BJHsgK

65 名前:はちみつ餃子 mailto:sage [2017/08/10(木) 11:21:25.23 ID:eseR3mB40.net]
>>63
オフセットして実装するのが普通だと思うけど、メンバ変数へのポインタがオフセットで実装されるとは決まってないんじゃないの?

66 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 13:08:18.43 ID:rA3728Ge0.net]
C++の場合クラス(およびその基底クラス)内のメンバは全部ヘッダファイルを辿っていけばワカルのだから
まず全く同じ内容のヘッダファイルのコピーを作り、
ファイル名を適当に変えて、多重インクルード箇所もコピーしたもので閉じるように変更して、
privateやprotectedを全部publicにして、
クラスの名前をFoo→Foo2とか改変して、
仮想関数は適当に空の定義でもつけて、
 ((Foo2*)p)->(Fooのデータメンバ)
式にキャストしてアクセスすればデータメンバと仮想関数については問題なくアクセスできる

(ODR違反は都市伝説なので事実上これで動く
 だいたいprivate破りを意図している時点で実コードレベルで影響しない規約とか気にしても仕方が無い

67 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 13:10:51.21 ID:rA3728Ge0.net]
Foo2の仮想関数が空ではないか、というのは動作上問題にならない
vtableのしくみがわかっているならワカル以下略

一方非仮想関数の方はちょっとうまい方法が思いつかない…
private属性のメンバ関数のアドレスがとれれば勝つるのだが

68 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 15:28:00.96 ID:CTzRRQx/0.net]
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を実行するにはどうしたらいいですか

69 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 15:45:01.75 ID:GPxw37uF0.net]
そりゃpushするときにBaseへの暗黙の型変換かかるからダメっしょ
ポインタつかえよBaseの

70 名前:デフォルトの名無しさん [2017/08/11(金) 15:47:46.79 ID:L0uHlCp20.net]
>>68
そのコード本当に動く?
本質じゃなくて申し訳ないが、そのまま追試出来るコードじゃないと…

ちなみに質問の回答はスライスな。



71 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 15:57:28.65 ID:GPxw37uF0.net]
おかしいな、確かに
コピーコンストラクタもないのにコンパイラ通るのかコレ

72 名前:デフォルトの名無しさん [2017/08/11(金) 16:00:31.30 ID:L0uHlCp20.net]
コピコンは省略可能だよー。

73 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 16:11:31.54 ID:CTzRRQx/0.net]
>>69
ありがとうございます
ポインタにすることで解決しました
>>70-71
動かしてるコードを簡略化したのでもしかしたら動かないかもしれないです

74 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 16:51:11.96 ID:+GdUPlS/r.net]
「本当に動く? (中略) そのまま追試出来るコードじゃないと…」
 ↓
「もしかしたら動かないかもしれない」
これがアスペというやつだな

75 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 16:54:58.31 ID:mfxycmdp0.net]
会話としては成り立ってる

76 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 17:09:12.83 ID:MFH9oRFs0.net]
この言語はどこの業務で使われてるの?
組み込み・制御はC++使ってますとか言いながら大体これCじゃん!だから論外として

77 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 17:11:30.49 ID:Ca8C76qb0.net]
gcc が c++ で書き直された、という話はあったな

78 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 17:29:47.32 ID:fw1fdXf30.net]
>>76
https://github.com/search?utf8=%E2%9C%93&q=language%3AC%2B%2B+stars%3A%3E%3D1000&type=Repositories

79 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 18:02:24.77 ID:bpB/tg4h0.net]
Webブラウザとかゲームとか

80 名前:はちみつ餃子 mailto:sage [2017/08/11(金) 18:34:36.55 ID:eZ0/1svY0.net]
>>76
Better C として使ってもええんやで



81 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 19:29:34.92 ID:rA3728Ge0.net]
>>76
Simulaの置き換え

82 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 20:50:37.74 ID:W25jNYVm0.net]
C言語としてg++使ってる

83 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 21:45:37.12 ID:U5fbDsCj0.net]
ウチじゃモータ制御に使ってるな

84 名前:デフォルトの名無しさん [2017/08/12(土) 16:56:14.99 ID:srjAo6Ap0.net]
質問です。

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

n = a+b:

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

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

が必要なのですか?
とても初心者なので、なにとぞ教えてください。
お願いします。

85 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 17:13:58.34 ID:AoA5DjYT0.net]
意図がわかりにくいがその場合だったら#include <n> だけあればいいんじゃないの?
そうでないとしたらinclude順は#include <a>と#include <b>を先に書くべき。

86 名前: mailto:sage [2017/08/12(土) 17:17:09.90 ID:lBXwiOpA0.net]
>>84
#include は宣言じゃない
多分
int n;
int a:;
int b;
のことじゃないかな?

87 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 17:21:05.88 ID:Yn7dYYpz0.net]
>84

#include
というのは、外部にあるファイルを読み込め
という命令なので、変数の宣言ではありません。

#include <a>

というのは、aというファイルを読み込めという
命令です。
n=a+b
という場合には、この式の前に、n, a, bという
変数の型を宣言する必要があります。
全てが整数ならば、
int a, b, n;
単精度実数ならば
float a, b, n;
と、倍精度実数ならば、
double a, b, n;
と書きます。
と変数の型を宣言します。

このことは、基本の基本なので、解説書の最初に書いてあるはずです。
解説書をよく読んで、その上で分からないことを
質問しましょう

88 名前:84 mailto:sage [2017/08/12(土) 17:27:53.44 ID:srjAo6Ap0.net]
>>85-87
googleだけの独学なので、とても勉強になりました。

とても、ありがとうございました。

89 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 17:28:31.16 ID:AoA5DjYT0.net]
文字通りの意味だったのかよ

90 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 18:07:41.60 ID:B05a5g6/r.net]
>#include <a>
>というのは、aというファイルを読み込めという命令です。

んなこたーない



91 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 18:16:01.28 ID:B05a5g6/r.net]
>>87
>この式の前に、n, a, bという変数の型を宣言する必要があります

それは規格のどこに書いてあるのですか?

92 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:18:12.75 ID:qkSSCQjy0.net]
DEFINEもincludeも本質的にやってることは同じだしファイルを読み込めは間違ってるな

93 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:23:05.89 ID:6XNTCj+p0.net]
includeがファイルをその位置に展開しろっていうのはあってると思うけど、何が不満なんだ?
defineはただの文字列置換。

94 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 21:29:22.94 ID:B05a5g6/r.net]
× #include <a>というのは、aというファイルを読み込めという命令
○ #include <a>というのは、aというヘッダーを読み込めという命令
○ #include <a>というのは、#include <a>をaというヘッダーの内容で置き換えろという命令

95 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 22:23:06.24 ID:AoA5DjYT0.net]
またヘッダー警察が来るぞ

96 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 23:15:33.63 ID:wV3c1N0ta.net]
>>84のレベルの人に説明するのに、厳密な用語をどうこういうより、>>87レベルの説明の方が適切だろう

97 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 23:26:56.30 ID:IKUtZym10.net]
仕様だとヘッダーとソースファイルは区別されてるみたいだけど
#includeはヘッダーとソースファイルのどちらも扱うから
二つを纏めてファイルと呼称しているとしたら>>94は間違いじゃないの?

98 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 06:37:43.35 ID:/9jKf3580.net]
「C++の#includeがファイルを読み込むとは限らない」
という説明を何かで読んだ記憶がある。

例えばソースに #include <hoge.h> と書いてあっても
hoge.h というファイルの実体は存在しなくて、
コンパイラが内部的なスイッチとして使っても構わない、みたいな話。
実際にそういう動作をするコンパイラは知らんけど。

99 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 07:15:34.96 ID:CgemGkhrr.net]
>>97
もとの>>87は#includeでなく#include <>なのだが

>二つを纏めてファイルと呼称しているとしたら
いきなり自分の結論を大前提に置かれても
まあこのへんはC++17で少し変わるだろう

100 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 11:33:24.03 ID:P6N6OiXF0.net]
CSVファイルを読み込むときに#include使うことある



101 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 20:57:49.74 ID:R0DVX6mKM.net]
てか、学ぶなら1冊くらい本買えよ
Googleで独学とか効率悪すぎる






[ 続きを読む ] / [ 携帯版 ]

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

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