Stockage d'objets hétérogènes en C
En C, stocker des objets de différents types dans un seul conteneur peut être un défi. Il existe cependant plusieurs approches pour résoudre ce problème :
1. Tirez parti de Boost.any
Envisagez d'utiliser la bibliothèque Boost, en particulier la classe boost::any. Boost.any fournit une méthode sûre et efficace pour stocker des objets de tout type. Vous pouvez créer un vecteur ou une liste d'objets boost::any et le remplir avec différents types de données.
2. Créer une structure ou une union personnalisée
Vous pouvez également créer votre propre structure ou union pour contenir des objets de différents types. Définissez une structure ou une union avec des membres représentant chaque type de données potentiel. Utilisez une énumération ou un indicateur pour spécifier le type actif pour chaque objet. Cependant, soyez prudent lorsque vous utilisez des syndicats, car ils imposent des restrictions et peuvent conduire à un comportement indéfini s'ils sont utilisés incorrectement.
Exemple de code
<code class="cpp">// Using a custom structure struct MyContainer { int i; string s; double d; enum {INT, STRING, DOUBLE} type; }; // Using boost::any #include <boost/any.hpp> vector<boost::any> myContainer; myContainer.push_back(10); myContainer.push_back("hello"); myContainer.push_back(3.14);</code>
Considérations supplémentaires
Considérations supplémentairesBien que ces méthodes apportent des solutions pour stocker des objets hétérogènes, il est important de s'interroger sur le but d'une telle conception. Déterminez s'il existe des structures de données ou des modèles de conception alternatifs qui pourraient résoudre le problème plus efficacement.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!