1

我已经在 Eclipse 中编写了这个头文件。Eclipse 显示错误,我不确定它们的含义。编码:

是 >> numPairs; kP = new KeyValuePair[numPairs];

Eclipse 显示 numPairs 和 kP 未解析。然后最后两个方法(createTable 和 getValue)显示“Invalid Overload”。我今天问了我的 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 回答