2013-03-31 4 views
0

utilisant autre chose qu'un constructeur de base a été un problème pour moi depuis un certain temps. La question est la suivante:C++ Constructor avec le paramètre en tant que membre privé

J'utilise un constructeur comme celui-ci

Table(const std::string& LoadState) 
{ 
    ImageManager ImgMgr; 
    ImgMgr.add_resource_directory("img/"); 

    if (LoadState == "Menu") 
    { 

    } 
    else if (LoadState == "CardFlip") 
    { 

    } 
    else if (LoadState == "Game") 
    { 

    } 
} 

Ceci est de charger des images différentes en fonction de la seconde du jeu, vous êtes pour ne rien chargé que nous ne avons pas besoin.

Je suis en train de mettre en œuvre ce dans l'objet du menu

private: 
    Table LaTable("Menu"); 

Cela n'a jamais travaillé, dans l'initialisation privée, que je suppose que je ne comprends pas. J'ai essayé: privé:

constructor 
{ 
    Table temptable("Menu"); 
    LaTable = temptable; 
} 

Le problème avec ceci est que l'image apparaît comme un carré blanc.

quelqu'un peut me diriger dans la bonne direction sur la façon de gérer cette situation?

+0

Ceci semble être très spécifique (ce qui est 'Table',' LaTable', etc.). Mais avez-vous essayé d'utiliser la liste d'initialisation dans le constructeur? –

+1

Ya, je l'ai essayé en fonction de la réponse de MM. ;) Merci – Chivos

Répondre

3

Si vous voulez créer un objet de Table en tant que membre d'une classe. Pour appeler son constructeur, utilisez le constructeur de cette classe. Faites-le quelque chose comme ceci:

// For example for a class named Menu 
class Menu 
{ 
public: 
    Menu() : LaTable("Menu") // <--- Here 
    { 
    } 

private: 
    Table LaTable; 
}; 
+0

Merci, ça l'a fait! C'est génial. Tout ce truc avec des constructeurs qui ne sont pas par défaut me dérange depuis longtemps !! Je savais que ça devait être quelque chose de facile! – Chivos

+0

@Chivos: De rien, mon pote. – deepmax

Questions connexes