Return c++ 中私有继承的字符串 class

Return a string as private inherited class in c++

我有一个 class 私下继承了 std::string。我想要一个成员函数,它 returns string 是基础 class。我该怎么做?

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

std::string NewClass::GetString() const
{
  ???
}

像这样:

#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;
}

Live working example

您最好将 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;
};

但请注意,这会删除派生 class 的任何部分。做这样的事情会更好:

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

这将 return 引用 std::string NewClass 继承自。