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;
}
您最好将 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
继承自。
我有一个 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;
}
您最好将 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
继承自。