23

これは必要ですか:

 template <typename T>
 class A{
   T*point;
   A<T> someFunction(){} //instead of returning just "A", not "A<T>"
 }

定義されているクラスと同じ型の をsomeFunction暗黙的に返しますか? Aクラス外では、この型は or similar としてのみ参照できるためA<float>、クラス内でもこれが必要であると想定していました。<> なしでコンパイルできることを発見したため、括弧を省略するのが安全な習慣であるかどうか疑問に思いました。

4

2 に答える 2

30

クラス定義内のテンプレート パラメーターを省略することは有効で安全な C++ です。実際、後でデフォルト値を持つ他のテンプレート パラメータを追加する可能性があるため、これは良い方法です。A<T>に変更するのを忘れてA<T,SomeOtherParameter>、奇妙なコンパイル時エラーが発生する可能性があります。あとは戻るだけAです。

于 2013-06-05T11:20:22.687 に答える