16264 次
2 に答える
1
template< typename P > // P is declared here
struct operations {
... // into this scope
}; // but it goes out of scope here
template< typename P > // So it needs to be redeclared
void operations::display( Rectangle const &, std::ostream &) {
... // for this scope.
}
関数display
は、そのパラメーターの名前を「所有」していません。テンプレート パラメータは、定義で再宣言する必要があります。コンパイラ メッセージは、大括弧内にtemplate<>
何かを配置することを提案する構文を参照しています<>
が、紛らわしいことに、大括弧を空のままにし、文字通り別のことtemplate<>
を意味します — 明示的な特殊化は、ここで必要なものではありません。
一方、定義で言及されていないstatic
メンバー関数のプロパティです。コンパイラは、定義シグネチャの他の部分を使用してそれを宣言シグネチャに一致させた後に記憶します。したがって、定義から消去する必要があります。static
static
于 2013-05-11T03:43:16.197 に答える