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