Napisałem niestandardową klasę kontenera, która zawiera instancję std::vector<double>
- działa ładnie. W celu zapewnienia zgodności z innymi interfejsami API chciałbym wyeksportować zawartość kontenera jako kopię std::vector<double>
. Obecnie to działa:C++ - utwórz nowy konstruktor dla std :: vector <double>?
MyContainer container;
....
std::vector<double> vc(container.begin(), container.end());
Ale jeśli to możliwe, chciałaby, aby móc napisać:
MyContainer container;
....
std::vector<double> vc(container);
mogę (łatwo) stworzyć taki std::vector<double>
konstruktora?
Dziękuję za wszystkie sugestie; Dowiedziałem się o "operatorze obsady" - dzisiaj; jednak generalnie wolę wyraźne implicite, więc przyjąłem odpowiedź z @Madame Elyse – user422005
Pomimo tego, co mówią odpowiedzi, nie ma czegoś takiego jak "operator obsady". Mówią o "operator ** konwersji", którego zadaniem jest po prostu zapewnić konwersję z jednego rodzaju na inny. ** ** cast to coś, co piszesz w swoim kodzie, aby powiedzieć kompilatorowi, aby zrobił konwersję. To ** wyraźna ** konwersja. Kompilator może również wykonywać niektóre konwersje bez wyświetlania rzutowania. To ** niejawna ** konwersja. Kiedy oznaczysz operatora konwersji jako "jawny", ograniczysz okoliczności, w których kompilator może go użyć, a często kończy się to wymaganiem obsady. –