[過去ログ] 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
792(1): デフォルトの名無しさん [] 2018/06/02(土) 18:09:00 ID:YEAzW6Zk(1/8) AAS
ヘッダーファイルについて質問なのです。
ヘッダーファイル内で、 ostream というのを使っているのですが、
#include <iostream>をヘッダーファイル内に記述していません。
エラーが出るだろうと思いつつ、ビルドしてみたらエラーが出ませんでした。
これはどういうからくりでしょうか?
795(2): デフォルトの名無しさん [] 2018/06/02(土) 18:30:00 ID:YEAzW6Zk(2/8) AAS
>>793793(1): デフォルトの名無しさん [sage] 2018/06/02(土) 18:23:14 ID:tlq/OxaF(1) AAS
ヘッダファイルの中じゃなくostreamを使っている翻訳単位(cppファイル)の中で最低1回include iostreamされてればOK
ありがとうございました。
↓のファイルをビルドするとエラーが出るのですが、何が原因かよく分かりません。
フレンド関数関連だと思います。フレンド関数については全く知らないので、真似して
作っただけです。
Vec.h
外部リンク:codepad.org
Vec.cpp
外部リンク:codepad.org
796: デフォルトの名無しさん [sage] 2018/06/02(土) 18:30:45 ID:YEAzW6Zk(3/8) AAS
>>794
ありがとうございました。
もしかしてヘッダーファイルのみをビルドしてもオブジェクトファイルはできないんですか?
797: デフォルトの名無しさん [sage] 2018/06/02(土) 18:34:39 ID:YEAzW6Zk(4/8) AAS
>>795
ある本に書いてあるコードでは、 Vec.h と Vec.cpp のようには分かれていないため、
自分で分けたのですが、エラーになってしまいました。
799(1): デフォルトの名無しさん [sage] 2018/06/02(土) 18:50:06 ID:YEAzW6Zk(5/8) AAS
>>798
Vec.h
外部リンク:codepad.org
上のVec.hの最初の方の
#include <iostream>
#include <cassert>
削除してもビルドエラーが出ません。
プロジェクトにはVec.hしかない状態でビルドしました。
801(1): デフォルトの名無しさん [sage] 2018/06/02(土) 19:00:50 ID:YEAzW6Zk(6/8) AAS
>>800800(1): はちみつ餃子 ◆8X2XSCHEME [sage] 2018/06/02(土) 18:55:56 ID:LSJtd55X(2/3) AAS
>>799
テンプレートのエラーはテンプレートが実体化するときに出ると思うよ。
だから、テンプレートを使ってないなら、エラーがあってもコンパイル自体は出来たりする。
ありがとうございました。
あともう一つ質問なのですが、ロベールの本に、
「関数を実体化するには呼び出したところからその実装が見える必要があります。」
「つまり、関数テンプレートは宣言と実装をヘッダファイルとソースファイルに分離して
書くことはできず、すべてヘッダファイルで実装する必要があるのです。」
と書いてあります。
クラステンプレートについては同様の記述がないのですが、
クラステンプレートについても宣言と実装をヘッダファイルとソースファイルに分離して
書くことはできず、すべてヘッダファイルで実装する必要がありますか?
804: デフォルトの名無しさん [sage] 2018/06/02(土) 19:21:25 ID:YEAzW6Zk(7/8) AAS
>>802
ありがとうございました。
ちょっと理解できないと思うので、あきらめて
外部リンク:codepad.org
としたところビルドできました。
ありがとうございました。
805: デフォルトの名無しさん [sage] 2018/06/02(土) 19:22:03 ID:YEAzW6Zk(8/8) AAS
>>803803(1): はちみつ餃子 ◆8X2XSCHEME [sage] 2018/06/02(土) 19:06:46 ID:LSJtd55X(3/3) AAS
>>801
Yes。 テンプレートはヘッダファイルに書く必要がある。
同じ実体 (テンプレート引数も同じなテンプレート) はリンク時に統合されるので、
最終的な実行ファイルに複数の実体があったりはしない。
ありがとうございました。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.051s