Meine Klasse ist meistens eine Front für einen Container, sollte ich diese Tatsache enthüllen?

8

In meinem Design habe ich eine Klasse, die meistens eine Front für std::vector<OtherClass> ist. Sollte ich in meiner Klassenschnittstelle jedem% code% an einen Aufrufer übergeben, einen Verweis auf die gesamte std::iterator übergeben oder eine Reihe von Funktionen zur Verfügung stellen, um auf den Inhalt meiner vector zuzugreifen? Oder gehen Sie anders vor?

Weitere Informationen: Die Elemente im Container werden während der Initialisierung eingerichtet und nicht hinzugefügt, wenn das Programm normal ausgeführt wird. Die Clients meiner Klasse werden häufig Abfragen ausführen und den Status der vector -Elemente ändern, allerdings nicht auf zeitkritische Weise.

    
Harald Hansen 08.09.2014, 18:59
quelle

1 Antwort

1

Sie sollten die Funktionen erstellen, um den Vektor intern zu ändern. Hier ist warum:

Abhängig vom Compiler können Sie verschiedene Versionen von STL (Standard Template Library) ausführen, was zu unerwarteten Problemen führen kann. Hypothetisch können sie die Arbeitsweise von std :: vector ändern, wenn Sie es in einem älteren (oder neueren) Build erstellen ) Version der Bibliothek und senden Sie es ab.

Ich vermute jedoch, dass dies keine Bibliothek oder ein Projekt ist, das möglicherweise mit einem anderen Compiler verwendet wird. Sie können sicher einen Verweis oder Zeiger auf den Vektor senden, solange Sie mit der gleichen Version von STL ausführen und kompilieren.

    
C_Plus_Plus_Programmer 09.09.2014 00:41
quelle