Я пытаюсь использовать < < оператор А вызвать метод вставки на LinkedList, например:инвалидных операнды с перегруженным оператором <<
a<<b
takes data b and inserts it into LinkedList a
Вот моя реализация в моих .h и .cpp файлах :
class LinkedList{
public:
LinkedList();
LinkedList(const LinkedList &l); //copy constructor
~LinkedList(); //destructor
//read the list for items
bool reset();
bool next();
int get();
//insert an item in the list
bool insert();
bool insert(int &data);
//delete an item in the list
bool remove();
//Should take data b and add it to the linked list a
void operator<< (int data);
;
//advances the internal iterator 1 node if not null
void operator++();
_________________________________________
Linkedlist.cpp
void LinkedList::operator<<(int &data)
{
insert(data);
}
bool LinkedList::insert(int &data){
LinkedListNode* n;
LinkedListNode *tempNode;
n = new LinkedListNode();
n -> data = data;
if(head==NULL){
head = n;
current = head;
size++;
return true;
}
if(head->next!=NULL){
tempNode = head->next;
}
else{
tempNode = head;
}
while(tempNode->next!=NULL){
tempNode = tempNode->next;
}
head->next = n;
size++;
return true;
}
в мой основной, я использую:
l<<num;
и получаю ошибку:
invalid operands to binary expression ('LinkedList *' and
'int')
Почему это происходит, если я перегрузил оператора в классе LinkedList?
Декларация: 'void operator << (int data);' Реализация: 'void LinkedList :: operator << (int & data)'. Вы можете заметить разницу? –
У вас есть LinkedList *, а не 'LinkedList'. Попробуйте '* l << num;' – molbdnilo