に問題があるためです。 .TEMPLATEファイルは.hファイルでは '..'の前に 'typename'が必要です。テンプレートクラスをコンパイルしようとすると、 '..'が依存スコープ
template <typename dataType>
class Node {
private:
dataType nodeData;
Node<dataType>* nextLink;
Node<dataType>* previousLink;
public:
Node(const dataType& nodeData);
// methods
template <typename dataType>
Node<dataType>::dataType Node<dataType>::getData() const {
return nodeData;
};
コンパイルしようとしたとき、私は取得エラーです:
need ‘typename’ before ‘Node<dataType>::dataType’ because ‘Node<dataType>’ is a dependent scope
Node<dataType>::dataType Node<dataType>::getData() const {
それでは、私は型名を追加それは私にこのエラーを与える:
error: expected nested-name-specifier before ‘dataType’
typename dataType getData() const;
^
error: expected ‘;’ at end of member declaration
error: declaration of ‘int Node<dataType>::dataType’
error: shadows template parm ‘class dataType’
template <typename dataType>
^
どうしたのですか?
template <typename dataType>
dataType Node<dataType>::getData() const {
return nodeData;
}
コンパイラのメッセージは、それが適切な定義を見つけることができませんので、この場合には誤解を招くされ、それが前提としていますdataType
と呼ばれる全くメンバーはありません
コンパイラが示すように 'node :: dataType'の前に' typename'を 'dataType'の前に置いたようです。これは本当ですか?コード変更後にソースを表示できますか? –
'' Node :: dataType'の前に 'typename'を置くとメッセージが表示されます。 'dataType'の前ではありません –
@BrianCainはそれが重複とは思わない –