2016-04-23 1 views
3

J'ai des difficultés à accéder à un tableau de chaînes. Il est déclaré comme un tableau privé et rempli dans le constructeur de la classe. J'ai une fonction Get définie. Le problème est lorsque j'appelle cette fonction au moment de la compilation, je reçois une erreur que je ne peux pas accéder au membre privé déclaré en classe. Je reprends juste le codage juste pour les yuks, en tant que tel je suis à un stade pré-pointeurs et pré-vecteurs donc j'essaie d'éviter les situations qui forceraient leur utilisation.Impossible d'accéder à un tableau privé

Words.h

#pragma once 
#include <string> 
#include <iostream> 
#include <array> 

class Words { 
    Words(); 

    public: 
     std::string GetNewWord(int); 

    private: 
     std::string WordList[23] = {}; 
}; 

Words.cpp - Le tableau est complètement rempli, mais raccourci ici

#include "Words.h" 

Words::Words(){ 
    WordList[0] = "omega"; 
    WordList[1] = "minors"; 
    WordList[2] = "stigma"; 
    WordList[3] = "glamor"; 
    WordList[4] = "savior"; 
    WordList[5] = "disarm"; 
    WordList[6] = "isogram"; 
    . 
    . 
    . 
    ; 
} 

std::string Words::GetNewWord(int choice) 
    { 
     return WordList[choice]; 
    } 

main.cpp - contient une boucle infinie pour que je puisse tester rapidement si le tableau était peuplé

#include <iostream> 
#include <string> 
#include "Words.h" 

Words word; 

int main() { 

    do { 
     std::cout << "choice: "; 
     int choice; 
     std::cin >> choice; 
     std::cout << "\n" << word.GetNewWord(choice) << "\n"; 

    } while (true); 

    return 0; 
} 

Répondre

3

Le constructeur est privé, car tous les membres d'une classe sont par defau lt. Il suffit de le déplacer vers la section publique.

+0

Quelle est la différence entre avoir un int privé ou un autre type par rapport à un tableau. La plupart des textes indiquent que toutes les variables statiques ou les données qui appartiennent à la classe sont marquées private par défaut ou en utilisant la balise privée, puis définissent les méthodes get/set pour y accéder. Votre conseil résout le problème, mais crée une nouvelle question sur la bonne façon d'utiliser le tableau défini par la classe par rapport aux autres données définies par la classe. – Wes

+0

Il n'y a pas de différence du tout. Votre problème n'a rien à voir avec le membre en train d'être un tableau ou avec la méthode getter. Le constructeur de votre classe était privé et donc pas accessible. C'est ce que le compilateur s'est plaint. –