|
생성자 부분을 고치니 C++빌더에서 컴파일이 되는군요.
//---------------------------------------------------------------------------
#include <iostream>
#include <string>
#pragma hdrstop
#include <list> // 사용자 정의 헤더 파일과 STL 헤더파일만 #pragma hdrstop이하에 놓아도 됩니다.
//---------------------------------------------------------------------------
using namespace std;
class MailList
{
private:
string name, street, city, state, zip; // 한 줄로 써도 됩니다.
public:
MailList(string n, string s, string c, string st, string z):
name(n), street(s), city(c), state(st), zip(z) {} // 생성자의 올바른 사용법입니다.
string getName() const { return name; } // 가능한 한 const를 사용하는 습관을 가지세요.
string getCity() const { return city; }
string getStreet() const { return street; }
string getState() const { return state; }
string getZip() const { return zip; }
};
bool operator<(const MailList &a, const MailList &b)
{
return a.getName() < b.getName();
}
bool operator==(const MailList &a, const MailList &b)
{
return a.getName() == b.getName();
}
void display(const list<MailList> &lst)
{
for (list<MailList>::const_iterator p = lst.begin(); p != lst.end(); ++p) // p++보다 약간 빠릅니다.
cout << p->getName() << ": "
<< p->getStreet() << ", "
<< p->getCity() << ", "
<< p->getState() << ", "
<< p->getZip() << endl; // 이것도 한줄로 가능하죠. 그리고 "\n"보다는 endl을 많이 씁니다: 스트림 flush 기능 때문이죠.
}
int main()
{
list<MailList> mlstA;
mlstA.push_back( MailList("James, Tom", "1102 W. Henry st", "Mission", "TX", "78572") );
mlstA.push_back( MailList("김성철","둔전리","용인","시","449812") );
mlstA.push_back( MailList("이동철","용인", "용인","시","449812") );
mlstA.sort();
display(mlstA);
return 0;
}
: 참고로 타 컴파일러에서는 문제없이 컴파일됩니다.
어떤 컴파일러인지가 궁금하네요.
|