Ciao ho aggiornato il mio Xcode alla versione 4.2 e clang ++ alla versione:clang ++ messaggio di errore quando si utilizza C++ 0x: telefonare al costruttore cancellato di
Apple clang version 3.0 (tags/Apple/clang-211.10.1) (based on LLVM 3.0svn)
Target: x86_64-apple-darwin11.2.0
Thread model: posix
Quando tenta di compilare il seguente codice con clangore -std = C++ 0x
#include <memory>
#include <limits>
#include <boost/shared_ptr.hpp>
class ilpConstraintImpl {
public:
virtual ~ilpConstraintImpl() {}
};
class ilpConstraint {
public:
ilpConstraint(ilpConstraintImpl* implptr):impl(implptr) { }
public:
boost::shared_ptr<ilpConstraintImpl> impl;
};
class ilpExprImpl {
public:
virtual ilpConstraint operator<= (const double rs)=0;
virtual ~ilpExprImpl() {}
};
class ilpExpr {
public:
virtual ~ilpExpr() {};
ilpConstraint operator<= (const double rs) { return impl->operator<=(rs); }
ilpExpr(ilpExprImpl* implptr):impl(implptr) { }
boost::shared_ptr<ilpExprImpl> impl;
};
ottengo il seguente errore:
./test.h:46:54: error: call to deleted constructor of 'ilpConstraint'
ilpConstraint operator<= (const double rs) { return impl->operator<=(rs); }
^~~~~~~~~~~~~~~~~~~~
./test.h:28:7: note: function has been explicitly marked deleted here
class ilpConstraint {
^
1 error generated.
compilazione senza -std = C++ 0x opere.
Questo tipo di opere .... l'aggiunta di un costruttore di copia come: \t ilpConstraint (const ilpConstraint & impcon): l'impl (impcon.impl) {} sposta il problema da per shared_ptr con lo stesso messaggio di errore:) – plaisthos
Siamo spiacenti. Potresti provare 'std :: shared_ptr' da libC++. Devi selezionare libC++ sotto le impostazioni della "Libreria standard C++" (non è l'impostazione predefinita). –
Mi sembra di ricordare che c'era un problema con boost shared_ptr con un costruttore di copie cancellato, che si basava su un modello di costruttore per fare la copia e essere favorito. Le versioni successive di boost risolvevano quel problema. –