2017-12-12 12 views
1

C# hat diese kleine nette Eigenschaft: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methodsC# Erweiterungsmethoden analog in C++

Das ist wirklich cool. Lassen Sie mich Ihnen ein Beispiel geben:

Ich möchte concat Methode zu std::vector hinzufügen, aber ich will es nicht erben. Diese Funktion wäre sehr nützlich. Verfügen Sie in C++ über analoge Funktionen, mit denen Sie einem Typ eine Funktion hinzufügen können, ohne vom ursprünglichen Typ zu erben? Ich bitte um eine Sprachversion.

+0

... und https://stackoverflow.com/questions/7922112/c-extension-functions – spender

+0

klare Methoden C# Erweiterung sein, tun _to eine type_ keine Funktion _add_. Es ist genau das, was es ist: eine statische Methode in einer statischen Klasse. Der Typ wird nicht erweitert. Die "Menge von Operatoren", die auf den Typ einwirken, wird erweitert. –

Antwort

4

In C++ ist dies nicht direkt möglich; Das heißt, Sie könnten eine Funktion implementieren, die einen Verweis auf eine std::vector als erstes Argument hat und einen ähnlichen Zweck wie eine Erweiterungsmethode erfüllt (die mehr oder weniger nur syntaktischer Zucker dafür sind).

1

Eine kostenlose Funktion könnte hier Ihr Freund sein, z.B.

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