C# 扩展方法在 C++ 中的模拟

C# extension methods analogue in C++

C# 有这个不错的小功能:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods

这真的很酷。让我举个例子:

我想将 concat 方法添加到 std::vector 但我不想继承它。此功能将非常有用。你有 C++ 中的任何类似功能,允许在不继承原始类型的情况下向类型添加函数吗?请给我一个语言级别的功能。

在 C++ 中,这是不可能的;话虽如此,您可以实现一个函数,该函数将 std::vector 的引用作为第一个参数,用于与扩展方法类似的目的(这或多或少只是语法糖)。

免费功能可能是您的朋友,例如

namespace VectorMethods
{
    std::string contat(const std::vector<std::string>& vec)
    {
        // return result of concatenating vector
    }
}