Je teste les supprimeurs personnalisés pour unique_ptr
. Étrangement, seuls les supprimeurs qui sont des objets fonctionnels fonctionnent correctement. Si je les remplace par des fonctions ou des lambdas, le programme ne compile pas. Qu'est-ce que je fais mal?
Voici mon programme de test complet
#include
#include
using namespace std;
class Vehicle {
public:
Vehicle(){ cout<<"Constructeur du véhicule..."<;
// Ne compile pas
//using VehiclePtr = unique_ptr;
// Fonctionne correctement
using VehiclePtr = unique_ptr;
class VehicleFactory {
public:
static VehiclePtr createVehicle(string type){
VehiclePtr vptr;
if("bicycle"==type) {
vptr.reset(new Bicycle());
// Cela fonctionne également
// vptr= (VehiclePtr) new Bicycle();
return vptr;
}
else if("car"==type) {
vptr.reset( new Car());
return vptr;
}
return nullptr;
}
};
void vehicleFactoryTest(){
cout<<"* Démarrage de vehicleFactoryTest()..."<go();
auto newCar = VehicleFactory::createVehicle("car");
newCar->go();
}
int main(int, char **)
{
vehicleFactoryTest();
return 0;
}