私はまた、どのようなヘッダファイル と一般的なことを理解しています。私は何ですか ヘッダーまたはクラスを使用すると、実装されていませんか?私は すべてのクラスを作成する必要があります 私はやっていますか?私の実際の仕事関数はヘッダーファイルかCPPファイルの中に が必要ですか? 私はこれらの適切な使用に失われており、より実践的なプログラマーの実際の指針 を実際に使用することができます。
私は数年前に再び風を吹きましたが、私は同じ質問をしていたでしょう - それはよく覆われているものではありません。だから私はあなたの問題の肉として見るその部分を分解しましょう。
私は私が行うすべて のためのクラスを作成する必要があり か?
これは主観的ですが、私は「いいえ」と言います。モデル化したいもののクラスを作成する必要があります。たとえば、int
やchar
のようなCの型よりも複雑なデータ項目が考えられます。また、String
クラスとSTL
のコンテナ(look at vector)を使用する必要があります。要するに、これはおそらくあなたが行うほとんどのことに対してクラスを使用していることを意味しますが、それはあなたのコードの最後の小さな部分が何とかクラスに落ちなければならないと言っているわけではありません。
私はまた、どのようなヘッダファイル と一般的なことを理解しています。
私はちょうどあなたが得るものを繰り返すことができます。おそらくあなたが知っているように、C
と結果としてC++
は、コンパイル単位の前にない関数(すべてのヘッダーがインクルードを置き換えた後の完全なソースコード)のプロトタイプ定義を必要とします。このように:
#include <iostream>
using namespace std;
int testadd()
{
int a = 4; int b = 2; int c = add(a, b);
return c;
}
int add(int x, int y)
{
return x + y;
}
int main(int argc, char** argv)
{
cout << "result is: " << c << endl;
return 0;
}
(不自然な例)testadd
はadd
を見つけることができませんが、main
がadd
を見つけることができるので、動作しません。
あなたのプログラムは理想的には、あなたが使いたいすべての関数、クラスなどのリストから始めるべきです。誰かが、読み込みをもっと簡単にし、(ライブラリのシナリオで)あなたの仕事を使ってプログラマーがプロトタイプをあなたの関数に書き直すのを防ぐので、これらが実装とは別のファイルにあれば良い考えです。他のライブラリをもっと使いやすくします。
あなたのクラスを実装するときに、あなたは選択肢があります:
- プロトタイプの形でクラスを宣言します(関数がプロトタイプとして終わら)とCPP単位でそれらを実装します。
- ヘッダーファイルにロット全体を実装します。
あなたがしていることは正直にあなた次第です。私はそれがより良いと思うので、私は1に固執するが、誰もあなたがしなければならないと誰も言わず、両方のテクニックが使われているのを見た。
ちなみに、1を選択すると、main.cpp、myclass.h、myclass.cppがあり、main.cppからmyclass.cppに実装されたmyclassメソッドを呼び出すとします。これらの2つのユニット(* .cpp)はマシンコード形式(vcの場合はmain.objとmyclass.obj)にコンパイルされています。リンカは、これらの2つのオブジェクトをexe
に持ち込み、各コンパイル単位で呼び出されたすべてのシンボル関数を保証することを、参照されている他のオブジェクトまたはライブラリの1つに見つけることができます。それが起これば、それはexeをまとめます。そうでない場合は、エラーが発生します。これは、学習ユーザーにこのような疑問を引き起こす別の結果(リンクエラー)です。
のVisual C++!= C++ – Falmarri
のVisual C++ ==一の実施、同じようにすべてのC++コンパイラ –
[C++ブック](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)をお持ちですか?あなたは、新しい言語を学び、偶然を認識するほど、ある言語から別の言語へ「移行」しません。つまり、車を運転して飛行機に乗ることから、飛行機を飛ぶことを学び、何かが車を運転するのと同じように起きた場合は、「それは膨らみます」と言って移動します。 – GManNickG