У меня есть некоторые проблемы с оператором шаблона <<
с кодом: </p>
class Manager
{
multiset<Advertising*, CompareAddPtr > AddToSend;
LinkedList<Client > ClientList;
LinkedList<Client > ActiveClientList;
list<string> initList;
list<string> commandsList;
}
в этом классе я пытаюсь использовать этот метод:
void Manager:: PrintAllClientDetialsTofile()
{
ofstream myfile;
myfile.open ("Result.txt",ios::app);
myfile << ClientList;
myfile << "\n";
myfile.close();
}
my << функция в классе шаблона: </p>
template <class L> ostream & operator<<(ostream& os,const LinkedList<L>& listToprint)
{
Link<T> * tmp = listToprint->pm_head;
for(int i=0;i<listToprint.GetNumOfElements();i++)
{
os<<*(tmp->m_data);
tmp=tmp->m_next;
}
return os;
}
У меня также есть шаблон класса
template <class T> class Link {
private:
T* m_data;
Link* m_next;
Link* m_prev;
клиентский класс:
#pragma once
#ifndef _CLIENT_H_
#define _CLIENT_H_
#include <string>
#include <set>
#include "Advertising.h"
#include "Email.h"
#include "FaceBook.h"
#include "Msn.h"
#include "Sms.h"
#include "Bill.h"
#include <ostream>
#include "LinkedList.h"
using namespace std;
struct CompareAddPtrClient : public std::binary_function<Advertising*, Advertising*, bool>
{
bool operator()(Advertising* x, Advertising* y) const
{
if(x->GetMadeOrderTime()<y->GetMadeOrderTime())
return true;
else
return false;
}
};
class Client
{
string m_clientname;
string m_companyName;
string m_cod;//check if have length of 15
string m_telephone;
string m_email;
int m_lastOrder;
int m_orderUntill;
multiset<Advertising*, CompareAddPtrClient > m_clientsAdds;
LinkedList<Bill > BillsForClient;
public:
Client(string clientName,string companyName,string cod,string telephone,string email);
Client(string clientName);
~Client(void);
//getters
LinkedList<Bill >* GetClientsBills(){return &BillsForClient;}
const string GetTelephoneNum()const {return m_telephone;}
const string GetEmail()const{return m_email;}
const int GetClientUntill()const{return m_orderUntill;}
const int GetLastOrderTime()const{return m_lastOrder;}
//setters
void UpdateLastTimeMadeOrder(int theday){m_lastOrder=theday;}
void UpdateOrderUntill(int theday){m_orderUntill=theday+7;}
//functions
friend ostream & operator<<(ostream& os,const Client& print);
bool operator==(const Client & other)const;
void PrintOrdersForClient()const;
void AddAdvertuseForClient(Advertising * add);
void LastOrdersByClient();
void PrintClientsBills();
};
#endif
когда я использую эту функцию для печати моего списка, я получаю ошибку компиляции:
ошибка C2593: 'оператор <<' является
неоднозначный </p>
я нашел похожий вопрос, который был задан
вопрос
но я не понимаю, как решить эту проблему.
спасибо:)