Si j'ai une classe avec une construction privée, en utilisant boost :: make_shared pour construire un shared_ptr de cette classe à partir d'une fonction membre de cette classe émettra une erreur de compilation en utilisant gcc 4.6.fonctions C++ 0x et ami et boost :: make_shared
#include "boost/shared_ptr.hpp"
#include "boost/make_shared.hpp"
class Foo
{
private:
Foo(int a){};
public:
static boost::shared_ptr do_foo(){ return boost::make_shared(5); }
friend template boost::shared_ptr boost::make_shared(Arg1 && arg1, Args && ... args);
}
int main()
{
auto f = Foo::do_foo();
}
Un appel à Foo::do_foo
entraînera une erreur du compilateur.
Des pensées?
Edité pour inclure du code compilable.
Qu'est-ce que Arg1 et Args? – sellibitze
@sellibitze Probablement ne devrait pas être là, mais je viens de copier-coller le code de l'OP. 'make_shared' prend un nombre variable d'arguments, et les transmet au constructeur du type cible. – kwatford
J'aurais pu jurer que je l'ai fait ... – Raindog