WRT sous le code, Abc & Xyz sont 2 classes.Obtenir une référence dans une fonction de membre de classe et l'affecter à un membre de données de classe (référence) en C++
Je reçois une référence dans DoOperation (Xyz & temp) et je veux l'assigner à un membre de données de classe ie mem1, de sorte que cette référence puisse être utilisée par d'autres fonctions membres DOOperation_2(), DOOperation_3() etc.
Je sais que nous ne pouvons pas déclarer une référence en C++ sans initialisation. Mais comment gérer un tel scénario en C++?
class Abc
{
public:
Xyz& mem; //ILLEGAL IN C++
void DoOperation(Xyz& temp)
{
mem = temp;
}
void DOOperation_2()
{
}
DOOperation_3()
{
}
};
Vous avez 2 fautes d'orthographe dans votre code 'Xyz' vs' xYZ' et 'mem1' vs' mem'. – mch
1) Passer la référence au constructeur de classe: 'Abc (Xyz & xyz): mem1 (xyz) {...}' 2) Utiliser un pointeur (ou un pointeur intelligent comme 'std :: unique_ptr') au lieu d'une référence. – 0x5453
C'est un code valide, * si * vous avez un constructeur de 'Abc' qui initialise la référence pour référencer réellement une instance réelle de' Xyz'. * Cependant * alors l'affectation dans 'DoOperation' ne réattribue pas réellement la référence parce que ce n'est pas possible, à la place elle fait' mem1.operator = (temp) ' –