基本上这是我的 C++ 分配项目,我对 C++ 很陌生,我遇到了这个错误。main == 中的注释代码也有错误不是匹配的操作数
1>Main2.obj : 错误 LNK2019: 无法解析的外部符号“class std::basic_ostream > & __cdecl operator<<(class std::basic_ostream > &,class Customer &)” (??6@YAAAV?$basic_ostream@DU? $char_traits@D@std@@@std@@AAV01@AAVCustomer@@@Z) 在函数 "void __cdecl display(struct Node *)" (?display@@YAXPAUNode@@@Z) 中引用
这是代码 Main.cpp
#include <iostream>
#include "account.h"
#include "cheque.h"
#include "customer.h"
using namespace std;
struct Node {
Node* m_next;
Customer& m_customer;
Node(Customer& customer) : m_next(0), m_customer(customer) {}
};
// only for the 1st Node
void initNode(struct Node *head,Customer n){
head->m_customer = n;
head->m_next =NULL;
}
// apending
void addNode(struct Node *head, Customer n) {
Node *newNode = new Node(n);
newNode->m_customer = n;
newNode->m_next = NULL;
Node *cur = head;
while(cur) {
if(cur->m_next == NULL) {
cur->m_next = newNode;
return;
}
cur = cur->m_next;
}
}
void insertFront(struct Node **head, Customer n) {
Node *newNode = new Node(n);
newNode->m_customer = n;
newNode->m_next = *head;
*head = newNode;
}
//struct Node *searchNode(struct Node *head, Customer n) {
//Node *cur = head;
//while(cur) {
//if(cur->m_customer == n) return cur;
//cur = cur->m_next;
//}
//cout << "No Node " << n << " in list.\n";
//}
bool deleteNode(struct Node **head, Node *ptrDel) {
Node *cur = *head;
if(ptrDel == *head) {
*head = cur->m_next;
delete ptrDel;
return true;
}
while(cur) {
if(cur->m_next == ptrDel) {
cur->m_next = ptrDel->m_next;
delete ptrDel;
return true;
}
cur = cur->m_next;
}
return false;
}
void deleteLinkedList(struct Node **node)
{
struct Node *tmpNode;
while(*node) {
tmpNode = *node;
*node = tmpNode->m_next;
delete tmpNode;
}
}
void display(struct Node *head) {
Node *list = head;
while(list) {
cout << list->m_customer << " ";
list = list->m_next;
}
cout << endl;
cout << endl;
}
int main()
{
Customer test1("sdfs","sdf2","dsfpppsf","fdgdfg","fdgdsffg");
struct Node *newHead;
struct Node *head = new Node(test1);
Customer test2("sdsffs","sdfhhmj2","dsfhfsf","fdgdfgs","fdsggdfg");
Customer test3("sdsdfs","sdllllf2","dsfldfgsf","fdgaghdfg","fdgbvcbdfg");
Customer test4("sdgnfgfs","ssdfsdf2","dsfhjhdsf","fdbvcgdfg","fdgsfddfg");
addNode(head,test2);
display(head);
addNode(head,test3);
display(head);
insertFront(&head,test4);
display(head);
cout << "Deleting the copied list\n";
deleteLinkedList(&newHead);
display(newHead);
return 0;
}
客户.cpp
#include "customer.h"
using namespace std;
Customer::Customer(string init_name, string init_address, string init_telephone, string init_sex, string init_dob)
{
name = init_name;
address = init_address;
telephone = init_telephone;
sex = init_sex;
dob = init_dob;
}
void Customer::showPersonDetails(void)
{
cout << "Name : "
<< name << endl;
cout << "Address : "
<< address << endl ;
cout << "Telephone : "
<< telephone << endl;
cout << "Sex : "
<< sex << endl ;
cout << "Date of Birth : "
<< dob << endl;
}
最后是customer.h
#ifndef CUSTOMER_H
#define CUSTOMER_H
#include <iostream>
#include<string>
using namespace std;
class Customer
{
private:
//
// class members
//
string name;
string address;
string telephone;
string sex;
string dob;
public:
// Constructor
Customer(string init_name, string init_address, string init_telephone, string init_sex, string init_dob);
// a print method
void showPersonDetails(void);
void changeDetails(void);
// This operator is a friend of the class, but is NOT a member of the // class:
friend ostream& operator <<(ostream& s, Customer& a);
};
// This is the prototype for the overload
ostream& operator <<(ostream& s, Customer& a);
#endif