由于C 的整数,因此无法覆盖to_string

Cannot override to_String because of an integer in C++

本文关键字:覆盖 to string 整数 由于      更新时间:2023-10-16

我有一个具有多个子类的员工类。我想在我的超级类和所有子类中覆盖函数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 {aka std :: _ ios_openmode}'[fpremissive]。

我还试图为整数做出功能,这也无法解决问题。

但是,我试图从另一个角度解决问题,并删除to_string函数,而是使用get功能来获取整数。但是我的问题是,我无法访问子类的及格,例如此子类中的" getomestring()":

class Engineer : public Employee{
public:
    Engineer(...):Employee(...){
    }
    ~Engineer(){
        ...
    }
    string profession(){
        return "someProfession";
    }
    string getSomeString(){
        return this->someString;
    }
    ...
private:
    string someString;
};
然后,我尝试在主要函数中访问getOmestring()函数:
   fout << employees[i]->getSomeInteger(); //THIS WORKS!
   if(employees[i]->profession() == "someProfession"){
       fout << employees[i]->getSomeString(); //but this doesnt work
   }

我收到一条错误消息,说" class雇员"没有名为" getomestring"的成员。

因此,我试图派遣员工[i],以便我能够像这里解释那样稳定地访问它。这也不起作用..

我现在的问题是;我该如何工作?我究竟做错了什么?在这种情况下,要解决问题的哪个版本会更好,还是我做的一切完全错误?

而不是

string s = stringstream(this->someInteger);

使用

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