由于C ++中的整数,无法覆盖to_String

时间:2014-02-06 17:17:11

标签: c++ tostring virtual-functions

我有一个有几个子类的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所解释的那样进行操作。哪个也行不通..

我现在的问题是;我如何让它工作?我究竟做错了什么?哪个版本处理问题在这个问题上会更好,或者我做的一切都完全错了?

1 个答案:

答案 0 :(得分:2)

而不是

string s = stringstream(this->someInteger);

使用

string s = std::to_string(this->someInteger);