c++11 是否可以创建一个带有允许各种返回类型 T 或 const T& 的函数的接口?

问题描述 投票:0回答:1

我想为返回消息的类创建一个接口。 我的问题是,有时返回一个 string 会更好,有时返回一个 const string& 会更好。 为继承类提供选择返回类型的可能性的最佳方式是什么?

struct Verbose{
   // my message is a class member
   virtual const string& getMsg()const=0;

   // my message is created in the function
   virtual string getMsg()const=0;
};
c++ c++11 interface return-type
1个回答
0
投票

该函数无法选择——您只能返回一种类型。

但是,如果调用者可以做出决定,那么它当然可以调用一个或另一个函数。就像我有这个API:

template <typename T> const T& get() const requires (!std::is_scalar_v<T>);
template <typename T> T get() const requires (std::is_scalar_v<T>);

当然,我只能这样做,因为调用者知道它会得到什么。

在您的情况下,消息通常只是基类,您通常可以始终返回

std:unique_ptr
std::shared_ptr
(取决于消息的工作方式)。

© www.soinside.com 2019 - 2024. All rights reserved.