1

クラスのポンド定義の外側でクラスを定義するのは適切ですか、それともポンド定義の内側に入るのですか?私が求めているものの例を以下に示します。

#ifndef CLASS
#define CLASS

template <typename T>
Class 
{
    Class();
};

template <typename T>
Class::Class()
{
}

#endif

- -または -

#ifndef CLASS
#define CLASS

template <typename T>
Class 
{
    Class();
};

#endif

template <typename T>
Class::Class()
{
}
4

1 に答える 1

2

複数定義されたシンボルを避けるために、インクルードガード(ポンド定義)内で定義します。したがって、テンプレートクラスの場合、例のように、ヘッダーファイルで定義する必要があるため、常にインクルードガード内で定義します。

他の非テンプレートクラスの場合、ソース(.cpp)ファイルでメンバー関数を定義する可能性があるため、これは明らかにインクルードガードの外にあります。

脚注として、このような単純なコンストラクターの場合、実際にはクラス宣言内で定義するか、まったく定義しないことも指摘しておきますが、実際のコードは例よりも少し複雑だと思います。与えられた。

于 2013-03-29T02:19:01.377 に答える