2010-09-05 2 views
-3
//// header file 

#ifndef _SECTION_ 
#define _SECTION_ 

#include <map> 
#include "Employee.h" 
using namespace std; 

class Section { 
private: 
    char* m_sectionName; 
    Employee* m_director; 
    Employee* m_viceDirector; 
    typedef multimap<string,Employee*> m_employees; 

public: 

    Section (char* name); 
    Section(const Section& section); 
    ~Section(); 

    const char* GetSectionName() const { return m_sectionName; } 
    const Employee* GetDirector() const { return m_director; } ///////////////check 
    const Employee* GetViceDirector() const {return m_viceDirector; } ///////////// check 

    void SetSectionName (const char* newName); 
    Employee* SetDirector (Employee& newDirector); ///////////// check 
    Employee* SetViceDirector (Employee& newViceDirector); ///////////// check 

    void Show() const; 
    void ShowEmployess() const; 
    void AddEmployee (Employee newEmployee); 
    Employee RemoveEmployee (string id); 

    int GetMinEmployeeWage() const; 
    int GetMaxEmployeeWage() const; 
    int AvgMaxEmployeeWage() const; 
    int GetNumOfEmployee() const; 
    int GetSumOfExpenses() const; 
}; 

#endif 



////// cpp 


#include "Section.h" 

Section::Section (char* name) 
{ 
SetSectionName(name); 
} 


Section::Section(const Section& otherSection) { 
SetSectionName(otherSection.GetSectionName()); 
m_director = otherSection.m_director; //////// check 
m_viceDirector = otherSection.m_viceDirector; /////// check 
} 

Section::~Section(){ 
delete [] m_sectionName; 
} 


void Section::SetSectionName (const char* newName){ 
m_sectionName = new char[strlen(newName)+1]; 
strcpy(m_sectionName, newName); 
} 


Employee* Section::SetDirector (Employee& newDirector) { 
Employee* oldDirector = m_director; 
m_director = &newDirector; 
return oldDirector; 
} 

Employee* Section::SetViceDirector (Employee& newViceDirector) { 
Employee* oldViceDirector = m_viceDirector; 
m_viceDirector = &newViceDirector; 
return oldViceDirector; 
} 

void Section::Show() const { 
cout <<"Section :"<<m_sectionName<<endl; 
cout <<"Director :"<<m_director<<endl; 
cout <<"ViceDirector :"<<m_viceDirector<<endl; 
} 


/*void Section::ShowEmployess() const { 
m_employees::iterator Iterator; 
for (Iterator index = m_employees.begin(); index != m_employees.end(); ++index) { 
    Iterator-> 
} 
}*/ 

///here the problem !! 
void Section::AddEmployee(Employee newEmployee) { 
m_employees.insert(make_pair((string)(newEmployee->GetLastName()),newEmployee)); 
} 
+4

В следующий раз, пожалуйста, отформатируйте свой код с помощью кнопки '101010' на странице редактирования. Кроме того, большинство людей здесь не хотят смотреть на такое количество кода, которое вы просто сбрасывали здесь. проблема в 10-15 строк, в идеале автономная (т. е. не нужны другие заголовки). Наконец, вы должны найти время, чтобы сформулировать правильный вопрос. Без этого я голосую, чтобы закрыть это как не настоящий вопрос. – sbi

+1

Какая строка является ошибкой? – SoapBox

+2

Вы даже попытались разобраться с проблемой? – Patrick

ответ

2
typedef multimap<string,Employee*> m_employees; 

Делает m_employees псевдоним для специализированного типа карты. Вам нужно определить участника. Вместо этого используйте:

typedef multimap<string,Employee*> EmpMap; 
EmpMap m_employees; 
+0

Ударьте меня на 16 секунд! – Potatoswatter

+0

@Potatoswatter: Lol. И я думал, что я становлюсь медленнее ... ;-) – dirkgently

1

m_employees не является переменным, это имя типа (от ЬурейеГо в заголовке класса Раздела На той же строку, вы используете NewEmployee, как будто он является указателем на экземпляр Сотрудника, но. на самом деле это экземпляр копии.

Смежные вопросы