J'ai une classeComment créer un vecteur avec des objets non copiables et non mobiles?
class A {
public:
A(int x): x_(x) {}
void SetValue(int m) {x_=m};
private:
DISALLOW_COPY_AND_ASSIGN(A);
};
Je suis en train de créer un vecteur d'objets de type A
vector<std::unique_ptr<A>> objects;
objects.reserve(10);
for (int i = 0; i < 10; i++) {
auto a = MakeUnique<A>();
a->SetValue(20);
objects.emplace_back(a);
}
Il en résulte un appel d'erreur de compilation au constructeur supprimé de 'std::unique_ptr<A, std::default_delete<A> >'
'DISALLOW_COPY_AND_ASSIGN (A)' ne devrait pas être une macro qui définit l'opérateur copy ctor et assign, ce devrait être une classe de base qui marque la copie et assigner l'opérateur comme supprimé, et les opérations de déplacement par défaut. –
@GuillaumeRacicot, alors que je conduis toujours à partir de boost non invisibles, je ne vois pas l'avantage de votre assertion/axiome au dessus de la macro –