Voici un exemple simplifié du code sur lequel je travaille. Il y a une fonction qui prend un pointeur de classe A en tant qu'argument. Je veux passer un pointeur qui a été initialisé comme nullptr. Sans l'initialiser à une valeur temporaire d'ordures, est-il possible de passer le nullptr?Comment passer un nullptr?
class A
{
// stuff
};
class B
{
public:
A* pA1;
A objA;
std::vector<A*> vecB;
B() : pA1 (nullptr) { vecB.push_back(&objA); }
};
void function(A* p);
A* pA2;
int main()
{
B objB;
pA2 = objB.vecB[0];
function(objB.pA1);
return 0;
}
void function(A* p)
{
p = pA2;
}
Ce n'est pas clair pour moi ce que vous essayez de faire dans votre programme. –
Le but de la fonction est d'y arriver: \t objB.pA1 = pA2 –
Notez que le 'p' dans la définition de' function' est son propre pointeur initialisé à partir d'une * copie * de l'argument que vous avez passé. Donc l'affecter n'aura un effet que dans 'function', et aucun effet sur les autres objets pointeurs. Si vous vouliez modifier un autre pointeur, vous auriez besoin de quelque chose comme 'void function (A * & p)'. – aschepler