En fait, j'ai une question de conception ici. C'est très simple mais le point est:Rendement de C# à C++, traitant des conteneurs
J'ai une classe C++ qui a un vecteur STL déclaré en tant que membre privé. Mais les clients de cette classe doivent parcourir ce vecteur. En C# nous avons une instruction très pratique, le Rendement, que dans de tels cas, vous écrivez une fonction retournant un IEnumerable et cela vous "cède" une manière agréable d'itérer sur un conteneur privé à l'intérieur de cette classe. J'essaye juste de trouver une solution élégante pour C++, au lieu d'employer des méthodes comme GetValue (int idx).
Des suggestions?
Exemple:
class Fat
{
public:
Fat();
// some code here ...
private:
void LoadSectors(SECT startPoint);
std::vector<SECT>sectors;
};
class Storage
{
public:
Storage(string CompoundFile);
//For example, this method will receive a ref to my fat system and iterate over
//the fat array in order to read every sector.
LoadStrem(Fat& fat);
};
Ceci est par exemple bien simple.
Qu'est-ce qui est si inélégant à propos de GetValue (index)? –
@Ed: que vous êtes alors lié pour toujours à un conteneur indexable. Le code client n'a pas besoin de savoir comment les éléments sont contenus. – xtofl
Il y a un petit exemple maintenant – Andres