我有一个有几个子类的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;
};
我这里有函数“virtual string to_String(){...}我在尝试以字符串格式返回一些整数。但是,当我尝试编译它时,它给出了错误消息”无效转换从'int'到'std :: ios_base :: openmode {aka std :: _ Ios_Openmode}'[fpremissive]。
我还尝试为整数创建一个get函数,这也解决不了问题。
但是,我尝试从另一个角度解决问题,并删除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;
};
然后我尝试访问main函数中的getSomeString()函数:
fout << employees[i]->getSomeInteger(); //THIS WORKS!
if(employees[i]->profession() == "someProfession"){
fout << employees[i]->getSomeString(); //but this doesnt work
}
然后我收到一条错误消息,说'class Employee'没有名为'getSomeString'的成员。
因此,我尝试投射员工[i],以便我能够按照here所解释的那样进行操作。哪个也行不通..
我现在的问题是;我如何让它工作?我究竟做错了什么?哪个版本处理问题在这个问题上会更好,或者我做的一切都完全错了?
答案 0 :(得分:2)
而不是
string s = stringstream(this->someInteger);
使用
string s = std::to_string(this->someInteger);