在 c++ 中返回一个字符串作为私有继承类

Return a string as private inherited class in c++

本文关键字:字符串 继承 一个 c++ 返回      更新时间:2023-10-16

我有一个私下继承std::string的类。我想要一个成员函数,它返回作为基类的string。我该怎么做?

class NewClass() : private std::string
{
    ...
public:
    std::string GetString() const;
    ...
};
std::string NewClass::GetString() const
{
  ???
}

您最好将std::string保留为NewClass的私人成员。因此,您可以将其声明为:

class NewClass
{
private:
     std::string str;
...
public:
    std::string GetString() const;
};
...
std::string NewClass::GetString() const
{
    return str;
}

但是,如果您真的需要从std::string继承,您可以这样做

std::string NewClass::GetString() const
{
    return *this;
};

但请注意,这将删除派生类的任何部分。最好做这样的事情:

const std::string& NewClass::GetString() const
{
    return *this;
};

这将返回对NewClass继承自的 std::string 的引用。

像这样:

#include <string>
class NewClass
    : private std::string
{
public:
    const std::string& GetString() const{
        return *this;
    }
};
int main() {
    NewClass c;
    const std::string& the_string = c.GetString();
    return 0;
}

现场工作示例