предположим, что у нас есть шаблон stack<class T, int maxElements
с подклассом Entry
, который создаст связанный список для стека, поэтому что-то вроде этого:
template <class T, int maxElements>
class Stack{
private:
class Entry{
friend class Stack;
T info;
Entry* next;
};
Entry* first;
public:
template<class U, int n>
void append(const Stack<U, n>& s){
if(isEmpty()) first = s.first; /* here is the problem*/
....
}
};
Итак, проблема в строке помечены, и это assigning to 'Stack<char, 100>::Entry *' from incompatible type 'Stack<char, 10>::Entry *const'
, и это потому, что он строит «запись класса» для каждого экземпляра шаблона, но дело в том, что запись не зависит от параметра maxElement
, поэтому я хотел бы знать, есть ли способ сообщить об этом компилятору.
Пока что единственный способ, которым я могу думать, который может это сделать, - это извлечь класс из шаблона и сделать себя шаблоном, основанным только на T
PS: я знаю, что делю память в строке, где у меня ошибка, одна вещь за раз