私はC++を学び、現在のクラスに別のクラスを組み込む方法を混乱させています。たとえば、私はclass QuackBehavior
が#include <QuackBehavior.h>
に等しいかどうか疑問に思っています。それらが等しい場合、これらの2つの方法の違いは何ですか?コードはクラスファイルに別のクラスを含める方法
#include <string>
class QuackBehavior;
class Duck {
public:
Duck();
virtual ~Duck() {};
virtual void performQuack();
virtual std::string getDescription() = 0;
std::string getName() {return m_name;}
void setName(std::string name) {m_name = name;}
void setQuackBehavior(QuackBehavior * behavior);
protected:
std::string m_name;
QuackBehavior * m_quackBehavior;
};
ありがとうございます。
'class QuackBehavior;'行は前方宣言です - 'QuackBehavior'というクラスがあります。 'Class Duck'のクライアントは、' 'を含めずにコンパイルするだけで十分です。コンパイルを高速化します。しかし、それは、クワック動作を実装するのには十分ではありません。 –
これは前方宣言を理解するのに役立ちます:http://stackoverflow.com/questions/4757565/c-forward-declaration –
@JonathanLeffler意味があります。どうもありがとうございます。 –