プログラムに問題があります。私は Eclipse を使用していますが、これらのエラーの意味を理解できませんでした。しばらく探していましたが、エラーが見つかりません。ファイルをビルドするときにエラーと問題のリストを表示する 2 つのクラスを添付しました (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_ */
これはエラーのある 2 番目のクラスであり、配列をループするエラーが発生します。
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_ */