开发者

Error : C2143:syntax error : missing ';' before '.' [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center. Closed 12 years ago.
//// 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开发者_Python百科::~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));
}


typedef multimap<string,Employee*> m_employees; 

Makes m_employees an alias for the specialized map type. You need to define a member. Use instead:

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


m_employees is not a variable, it's a type name (from the typedef in the Section class header. On the same line, you are using newEmployee as if it is a pointer to Employee instance, but it is actually a copy instance.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜