0

デフォルトのテンプレート引数を持つテンプレート クラスがあります。このコードのコンパイル中に、 「デフォルトのテンプレート引数は関数テンプレートで使用できない可能性があります」というエラーが表示されます。MyClass<T, n>::empty()gcc バージョン 4.2.4 (ubuntu 10) でコードをコンパイルしています。

template<typename T, int n=10>
class MyClass{
    T Val[n];
    int Capacity;
    int Size;
    public:
    MyClass():Capacity(n), Size(0) {}

    bool empty();
};

template<typename T, int n=10>
bool MyClass<T, n>::empty() {
    return Size?false:true;
}
4

1 に答える 1

1

empty()問題がコードをコンパイルする方法であると仮定すると、実装のテンプレート パラメーター リストから既定値を削除できます。

template<typename T, int n>
bool MyClass<T, n>::empty() {
  return Size ? false : true;
}

empty()実装は、MyClass<T>インスタンスで呼び出す必要があるコードからアクセスできる必要があることに注意してください。実装ファイルでコンパイルすることはできません。

于 2013-11-10T13:48:41.710 に答える