J'ai une variable, qui est membre d'une de mes classes, dont une autre a besoin, mais je ne suis pas sûr de savoir comment pour passer efficacement la valeur entre eux sans utiliser une variable globale, ce que je voudrais éviter si possible. Je sais que je pourrais créer un objet, mais cela invoquerait le constructeur de la classe d'origine qui exécuterait un certain nombre de fonctions et écrirait les résultats inutiles à la mémoire, ce qui serait un gaspillage de ressources système.Est-il possible de passer une variable hors d'une classe sans créer un nouvel objet en C++?
Existe-t-il un moyen facile de transmettre cette valeur entre les deux fonctions?
Mise à jour: La classe qui est dans le besoin de la variable, appelée no_of_existing_devices
. Le but de class Initialise
est d'ouvrir un fichier et compter le nombre de lignes de test, il contient, et placez ce nombre dans la int no_of_existing_devices
variable, qui est ensuite utilisé par le Device::Device()
pour créer un objet pour chaque
class Device
{
public:
void view_attribute_list();
void set_attribute();
Device();
};
Device::Device()
{
for (int count = 0; count < no_of_existing_devices; count ++)
{
// Create an object for each iteration, up to a maximum of no_of_existing_devices
}
}
la classe dont cette variable est membre
class Initialise
{
public:
int no_of_existing_devices;
bool initialisation;
string existing_device_list[100];
void initialise_existing_devices();
Initialise();
};
Initialise::Initialise()
{
no_of_existing_devices = 0;
}
void Initialise::initialise_existing_devices()
{
string line;
ifstream DeviceList;
DeviceList.open("devices/device_list");
while (true)
{
getline(DeviceList, line, '\n');
if (DeviceList.eof())
{
break;
}
++ no_of_existing_devices;
}
DeviceList.close();
DeviceList.open("devices/device_list");
for (int i = 0; i < no_of_existing_devices; i ++)
{
getline(DeviceList, line, '\n');
existing_device_list[i] = line;
}
Device existing_devices[no_of_existing_devices];
!initialisation; // Existing devices are now initialised
}
Est cette variable censée être un champ membre dont jamais la classe contient? Cela dépend-il de l'existence d'une instance ou peut-il exister seul? – birryree
pouvez-vous poster votre code afin que nous puissions avoir plus de compréhension de ce que vous essayez d'accomplir? – pankajt
Vous devrez poster plus de code afin que nous puissions comprendre ce que vous souhaitez réaliser. – Puppy