Gemeinsame Zeiger und const Korrektheit

8

Was ist der richtige Weg, um die const Korrektheit einer Klasse auf ihre spitzen Mitglieder zu erweitern? In dem Beispielcode ist die konstante Version der Methode get, um ein std::shared_ptr zu erstellen, dessen Referenzzähler mit dem internen Mitglied m_b identisch ist, oder beginnt es wieder mit 0 ?

zu zählen %Vor%     
nyarlathotep108 21.03.2016, 11:57
quelle

2 Antworten

7

shared_ptr behält immer Referenzzählungen, wenn Sie aus einem anderen shared_ptr konstruieren; Die einzige Möglichkeit, unsicher zu verwenden, besteht darin, aus einem rohen Zeiger zu konstruieren: shared_ptr<...>(my_ptr.get()) // don't do this .

Sie könnten auch an dem propagate_const -Wrapper interessiert sein, der sich in der Bibliothek Fundamentals TS befindet v2 wird wahrscheinlich bald in Ihrer Implementierung verfügbar sein.

    
ecatmur 21.03.2016, 12:05
quelle
0

Die Antwort kann abgeleitet werden, indem einige Tests mit use_count() durchgeführt werden.

Beachten Sie auch, dass die Methodenauflösung möglicherweise nicht ganz offensichtlich ist:

%Vor%

Ausgabe:

%Vor%     
Emerald Weapon 21.03.2016 12:23
quelle