Я новичок в C++. Я работаю над наследованием. В моем коде, когда я пытаюсь вызвать функцию-член базового класса из производного класса, я получаю ошибку statement cannot resolve address of overloaded function
. Я применил оператор области действия, и функция-член базового класса защищена, так что у производного нет проблемы с доступом к функциям. Что я здесь делаю неправильно? Вот мой код:Ошибка при вызове защищенной функции базового класса
#include <iostream>
#include <string.h>
using namespace std;
class Employee
{
private:
char *emp_name;
int emp_code;
char *designation;
protected:
Employee(char *name ="",int code = 0,char *des = "", int nlength=1, int dlength=1): emp_code(code)
{
emp_name = new char[nlength+1];
strncpy(emp_name,name,nlength);
designation = new char[dlength+1];
strncpy(designation,des,nlength);
}
~Employee()
{
delete[] emp_name;
delete[] designation;
}
char* GetName()
{
return emp_name;
}
int GetCode()
{
return emp_code;
}
char* GetDes()
{
return designation;
}
};
class Work: public Employee
{
private:
int age;
int year_exp;
public:
Work(char *name ="", int code = 0, char *des = "", int nlength=1, int dlength=1, int w_age=0, int w_exp=0):Employee(name,code,des,nlength,dlength),age(w_age),year_exp(w_exp)
{
}
void GetName()
{
Employee::GetName;
}
void GetCode()
{
Employee::GetCode;
}
void GetDes()
{
Employee::GetDes;
}
int GetAge()
{
return age;
}
int GetExp()
{
return year_exp;
}
};
int main()
{
using namespace std;
Work e1("Kiran",600160,"Implementation Specialist", strlen("Kiran"),strlen("Implementation Specialist"),24,5);
cout << "Name: " << e1.GetName() << endl;
cout << "Code: " << e1.GetCode() << endl;
cout << "Designation: " << e1.GetDes() << endl;
cout << "Age: " << e1.GetAge() << endl;
cout << "Experience: " << e1.GetExp() << endl;
}
Кроме того, я получаю ошибку no-match for operator<<
. Я не печатаю какой-либо класс. Я просто называю функцию производного класса здесь.
'Сотрудник :: GetCode' ничего не говорит. 'Employee :: GetCode()' делает. –
'e1.GetName()' не возвращает никакого значения (возвращаемый тип 'Work :: GetName' является' void'), поэтому неясно, что вы пытаетесь напечатать. –