construstors 和 operator 的問題
//prob5.h
#ifndef PERSON_H
#define PERSON_H
#include <iostream>
using namespace std;
class Person
{
public:
Person();
/* the copy constructor declaration */
Person(const Person& );
/* the assignment operator overloading declaration*/
Person& operator=(const Person& );
void setName(string);
void setAge(int);
void printinfo();
private:
string name;
int age;
};
#endif
=========================================
//prob5_main.cpp
#include \"prob5.cpp\"
int main() {
/* please DO NOT make any changes in this file */
Person p1;
p1.setName(\"Peter\");
p1.setAge(50);
Person p2;
p2.setName(\"Lisa\");
p2.setAge(40);
Person p3(p1);
Person p5;
p5 = p1;
Person p4 = p2;
Person p6;
p6 = p2;
p1.printinfo();
p3.printinfo();
p5.printinfo();
p2.printinfo();
p4.printinfo();
p6.printinfo();
}
==========================
//prob5.cpp
#include \"prob5.h\"
Person::Person(const Person& p) {
/* copy constructor: for you to complete 這邊要寫*/
}
Person& Person::operator=(const Person& p) {
/* assignment operator overloading: for you to complete 這邊要寫*/
}
void Person::setName(string n) { name = n;}
void Person::setAge(int a) { age = a;}
void Person::printinfo(){
cout <<\"Name: \" << name << \"\\t\\tAge: \" << age <<endl;
}
我想讓這個程式顯示出像下列一樣
Name: Peter Age: 50
Name: Peter Age: 52
Name: Peter Age: 48
Name: Lisa Age: 40
Name: Lisa Age: 42
Name: Lisa Age: 38
請各位幫幫忙吧@@
為什麼我用DEV-C++編譯後有一堆 linker error呢??
是我編譯方法不對嗎? 教教我吧!!謝謝囉!
1 個解答
- JM.CLv 41 0 年前最佳解答
#ifndef PERSON_H
#define PERSON_H
#include <iostream>
using namespace std;
class Person
{
public :
Person() ;
Person(const Person&) ;
Person& operator =(const Person&) ;
void setName(string) ;
void setAge(int) ;
void printinfo() ;
private:
string name ;
int age ;
} ;
****************************************
#include "prob5.h"
int main()
{
Person p1 ;
p1.setName("Peter") ;
p1.setAge(50) ;
Person p2 ;
p2.setName("Lisa") ;
p2.setAge(40) ;
Person p3(p1) ;
Person p5 ;
p5 = p1 ;
Person p4 = p2 ;
Person p6 ;
p6 = p2 ;
p1.printinfo() ;
p3.printinfo() ;
p5.printinfo() ;
p2.printinfo() ;
p4.printinfo() ;
p6.printinfo() ;
system("pause") ;
return 0 ;
}
****************************************
#include "prob5.h"
Person::Person() {}
Person::Person(const Person& p)
{
name = p.name ;
age = p.age + 2 ;
}
Person& Person::operator=(const Person& p)
{
name = p.name ;
age = p.age - 2 ;
}
void Person::setName(string n) { name = n ; }
void Person::setAge(int a) { age = a ; }
void Person::printinfo() {
cout <<"Name: " << name << "\t\tAge: " << age <<endl;
}
2006-08-29 23:44:44 補充:
你主程式include的標頭檔不對..不是#include "prob5.cpp"應該是#include "prob5.h"才對吧..
參考資料: Myself