2016-04-23 10 views
3

文字列の配列にアクセスできません。プライベート配列として宣言され、クラスのコンストラクタに格納されます。 Get関数が定義されています。問題は、コンパイル時にこの関数を呼び出すと、クラスで宣言されたプライベートメンバーにアクセスできないというエラーが発生することです。私はちょうどyuksのためのコーディングに戻っています。そのような私はステージ前のポインタとpre-vectorsにいるので、私は彼らの使用を強制する状況を避けようとしています。プライベートアレイにアクセスできません

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 - アレイが完全にここに満たさなく短縮さ

#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に - 配列があった場合、私は、迅速テストことができるように無限ループを含んでいますポピュレートされた

#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; 
} 

答えて

3

コンストラクタはプライベートです。クラスのすべてのメンバーはdefau lt。単純に公開セクションに移動します。

+0

プライベートintまたはその他の型と配列の違いは何ですか?ほとんどのテキストでは、クラスに属する静的変数やデータには、デフォルトで、またはプライベートタグを使用してprivateタグを付け、アクセスするget/setメソッドを定義しています。あなたのアドバイスは問題を解決しますが、クラス定義された配列と他のクラス定義のデータを使用する正しい方法が何であるかについての新しい質問を作成します。 – Wes

+0

違いは全くありません。あなたの問題は配列やゲッターメソッドを使っているメンバーとは関係ありません。あなたのクラスのコンストラクタはプライベートなのでアクセスできません。コンパイラが何を訴えたか –

関連する問題