PDA

View Full Version : مشکل در استفاده از sort



foenix
یک شنبه 15 اسفند 1389, 09:41 صبح
سلام دوستان عزیز . من یک کلاس برای دانشجو تعریف کردم و قراره با استفاده از تابع sort و با استفاده از شماره دانشجویی اونارو که توی یک list هستند sort کنم ولی نمیدونم با اینکه همه چیز به نظر درسته ، اما خطا دارم
فایل CStudent.h

#ifndef CSTUDENT_H
#define CSTUDENT_H
#include <string>
using namespace std;
class CStudent
{
private:
string m_firstName;
string m_lastName;
int m_stdNumber;

public:
CStudent(string fname = "", string lname="", int stdn=0);
void setFisrtName( string name );
void setLastName( string lname );
void setStdNumber ( int num );
string firstName(){return m_firstName;}
string lastName(){return m_lastName;}
int studentNumber(){return m_stdNumber;}
bool operator<( CStudent &std );
};

#endif // CSTUDENT_H


اینم فایل دات سی پی پی اش

#include "CStudent.h"

CStudent::CStudent(string fname, string lname, int stdn )
{
m_firstName = fname;
m_lastName = lname;
m_stdNumber = stdn;
}

void CStudent::setFisrtName(string name)
{
if( name=="" || name == m_firstName )
return;
m_firstName = name;
}
void CStudent::setLastName(string lname)
{
if( lname=="" || lname == m_lastName )
return;
m_lastName = lname;
}

bool CStudent::operator <( CStudent &std2 )
{
return m_stdNumber < std2.m_stdNumber;
}


اینم main من
چه از راه overload کردن > میرم چه از راه تعریف تابع cmp در main بازم خطا داره


#include <list>
#include "CStudent.h"
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool cmp( CStudent stda, CStudent stdb ){
return stda.studentNumber() < stdb.studentNumber();
}
int main(int argc, char *argv[])
{

list<CStudent> stds;
for( int i = 0; i < 10; i ++ ){
string fname, lname;
int stdNum;
cout << "Enter New First Name, Last Name, Number for new Student:";
cin >> fname >> lname >> stdNum;
if( fname.length() == 0 || lname.length() == 0 || stdNum < 10 )
break;

CStudent std( fname, lname, stdNum );
stds.push_back( std );
}
list<CStudent>::iterator itr;
for( itr = stds.begin(); itr != stds.end(); itr ++ ){
cout <<(*itr).firstName() << "\t\t" <<(*itr).lastName()<<"\t\t"<<
(*itr).studentNumber() ;
}
sort( stds.begin(), stds.end(), cmp );
}


ممنون

Kubuntu
یک شنبه 15 اسفند 1389, 18:50 عصر
میشه بگی کدوم خط رو خطا می گیره؟