Вот сделка.Я посмотрел на этом форуме, и я не нашел информацию, которую я ищу, или я, вероятно, не могу повторить ее для моей проблемы.У меня есть класс Table, который является универсальным, и у меня есть класс с именем MyString.
template <typename typeGen, int DIM>
class Table {
public:
TableauGenerique() : index_(0) { //On initialise courant à 0
}
void add(typeGen type);
private:
typeGen tableGen_[DIM];
int index_;
};
Моя проблема с функцией добавления.Иногда мне приходится делать это в main.cpp: (который хорошо работает)
Table <float,6> tabFloat;
tabFloat.add(1.6564);
, и в какой-то момент мне нужно сделать это, что не работает, потому что мне нужно специализировать функцию add длясоздайте объект MyString, передайте ему строку и затем сохраните объект в массиве (tableGen):
TableauGenerique <MyString,4> tabString;
Итак, я попробовал это (после класса), но безуспешно.
template <typename typeGen, int DIM>
void Table<typeGen,DIM>::add(typeGen type){ //Which is the generic one for float or ints
if(index_ < DIM) {
tableGen_[courant_] = type;
index_++;
}
}
template <class typeGen, int DIM>
void Table<typeGen,DIM>::add<string>(typeGen type) { //(line 75) Which is the specific or specialized function for myString
MyString str(type);
if(index_ < DIM) {
tableGen_[courant_] = str;
index_++;
}
}
Итак, как я могу заставить эту работу работать, потому что она вообще не компилируется, говоря: line75: error: ожидаемый инициализатор перед токеном «<» и в основном он говорит, что не соответствует функция для вызова Table :: add (const char [6]), </p>
Надеюсь, все достаточно ясно.Дайте мне знать, если что-то неясно.
Большое спасибо за вашу помощь!