У меня есть класс Employee, который имеет несколько подклассов. Я хочу переопределить функцию to_String в моем суперклассе и во всех подклассах, но я не могу заставить ее работать из-за целого числа в суперклассе:
class Employee{
public:
Employee(...){
...
}
virtual ~Employee(){
...
}
virtual string to_String(){
string s = stringstream(this->someInteger);
return s;
}
virtual string profession(){
...
}
private:
int someInteger;
};
У меня есть функция «виртуальная строка to_String () {...}», где я пытаюсь вернуть некоторое целое число в формате строки. Однако, когда я пытаюсь скомпилировать это, он дает мне сообщение об ошибке «недопустимое преобразование из 'int ' на 'std::ios_base::openmode {он же std::_Ios_Openmode}' [fpremissive].
Я также попытался сделать функцию получения для целого числа, что также не решает проблему.
Однако я попытался взглянуть на проблему с другой точки зрения и отказаться от функции to_String и вместо этого использовать функцию get для получения целого числа. Но моя проблема заключается в том, что я не могу получить доступ к функциям get подклассов, например "getSomeString()" в этом подклассе:
class Engineer : public Employee{
public:
Engineer(...):Employee(...){
}
~Engineer(){
...
}
string profession(){
return "someProfession";
}
string getSomeString(){
return this->someString;
}
...
private:
string someString;
};
Затем я пытаюсь получить доступ к функции getSomeString() в основной функции:
fout << employees[i]->getSomeInteger(); //THIS WORKS!
if(employees[i]->profession() == "someProfession"){
fout << employees[i]->getSomeString(); //but this doesnt work
}
Затем я получаю сообщение об ошибке, в котором говорится, что «класс Employee» не имеет члена с именем «getSomeString».
Поэтому я попытался бросить сотрудника [i], чтобы иметь доступ к нему стабильно, как объяснено a-parent-pointer-in-c">здесь. Что тоже не сработало..
Теперь мой вопрос; как заставить это работать? Что я делаю не так? И какая из этих версий для решения проблемы будет лучше в данном случае, или я все делаю совсем не так?
getSomeString
переопределятьto_String
? У них разные имена!Employee
не имеет функцииgetSomeString
, как говорит ошибка. - person Joseph Mansfield   schedule 06.02.2014