1

このヘッダー ファイルは Eclipse で作成しました。Eclipse は、意味がわからないというエラーを表示しています。コード:

>> numPairs です。kP = 新しい KeyValuePair[numPairs];

Eclipse は、numPairs と kP が解決されていないことを示しています。次に、最後の 2 つのメソッド (createTable と getValue) で「無効なオーバーロード」が表示されます。今日これについて TA に尋ねたところ、コードは正しいとのことでした。また、実装ファイルに分割しようとしましたが、同じエラーが続きます。私のヘッダー ファイルは、src フォルダーと main.cpp にあります。足りないものはありますか?

#ifndef TRANSLATIONTABLE_H_
#define TRANSLATIONTABLE_H_
#include "KeyValuePair.h"

template<typename Key, typename Value>
class TranslationTable
{
private:
    int numPairs;
    KeyValuePair<Key,Value> *kP;

public:
    TranslationTable(std::istream& is);
    TranslationTable();
    void createTable(std::istream& is);
    Value getValue(Key myKey) const;
};

 template<typename Key, typename Value>
 TranslationTable<typename Key,typename Value>TranslationTable()
 {return;}

 template<typename Key, typename Value>
 TranslationTable<typename Key,typename Value>TranslationTable(std::istream& is)
 {
is >> numPairs;
kP = new KeyValuePair<Key,Value>[numPairs];
 }

 template<typename Key, typename Value>
 void TranslationTable<Key,Value>::createTable(std::istream& is)
 {
is >> numPairs;
kP = new KeyValuePair<Key,Value>[numPairs];
 }

 template<typename Key, typename Value>
 Value TranslationTable<Key,Value>::getValue(Key myKey) const
 {

}

#endif /* TRANSLATIONTABLE_H_ */
4

1 に答える 1

1

::コンストラクター定義のスコープ解決表記を忘れました:

 template<typename Key, typename Value>
 TranslationTable<typename Key,typename Value>::TranslationTable()
                                              ^^^

 template<typename Key, typename Value>
 TranslationTable<typename Key,typename Value>::TranslationTable(std::istream& is)
                                              ^^^
于 2013-02-05T00:07:50.133 に答える