我的程序有问题。我正在使用 Eclipse,但我无法弄清楚这些错误的含义。我一直在寻找一段时间,找不到我的错误。我在构建文件时附加了两个显示错误的类和问题列表(我在 TransitionTable 的屏幕截图中找不到#endif 语句)。谢谢您的帮助。
在第一堂课中,它在构造函数中给了我一个错误:
no match for call to `(TranslationTable<int, std::string>) (std::basic_istream<char, std::char_traits<char> >&)'
#ifndef TRANSLATOR_H_
#define TRANSLATOR_H_
#include "TranslationTable.h"
#include <iostream>
#include <cstdlib>
#include <fstream>
template<typename Key, typename Value>
class Translator
{
private:
TranslationTable<std::string,int> Table1;
TranslationTable<int,std::string> Table2;
Key getKey();
Value getValue();
public:
Translator();
Translator(Key key,Value value);
Translator(std::istream& file);
};
template<typename Key, typename Value>
Translator<Key,Value>::Translator()
{
return;
}
template<typename Key, typename Value>
Translator<Key,Value>::Translator(std::istream& file)
{
Table1(file); // gives me error here
Table1.fillTable(file);
Table2(file); // same error here
Table2.fillTable(file);
}
#endif /* TRANSLATOR_H_ */
这是第二个有错误的类,它给我一个错误将循环遍历数组:
no match for 'operator*' in '**(((TranslationTable<int, std::string>*)this)->TranslationTable<int, std::string>::kP + (+(((unsigned int)i) * 8u)))'
#ifndef TRANSLATIONTABLE_H_
#define TRANSLATIONTABLE_H_
#include "KeyValuePair.h"
#include <iostream>
#include <cstdlib>
template<typename Key, typename Value>
class TranslationTable
{
private:
int numPairs;
KeyValuePair<Key,Value> *kP;
public:
TranslationTable();
TranslationTable(std::istream& is);
void fillTable(std::istream& is);
Value getValue(Key myKey) const;
};
template<typename Key, typename Value>
TranslationTable<Key,Value>::TranslationTable()
{
return;
}
template<typename Key, typename Value>
TranslationTable<Key,Value>::TranslationTable(std::istream& is)
{
numPairs = 0;
is >> numPairs;
kP = new KeyValuePair<Key,Value>[numPairs];
}
template<typename Key, typename Value>
void TranslationTable<Key,Value>::fillTable(std::istream& is)
{
for(int i = 0; i < numPairs; i++)
{
is >> *kP[i]; // error here
}
}
template<typename Key, typename Value>
Value TranslationTable<Key,Value>::getValue(Key myKey) const
{
}
#endif /* TRANSLATIONTABLE_H_ */