无法访问专用阵列

时间:2016-04-23 07:55:30

标签: arrays c++11 private-members

我无法访问字符串数组。它被声明为私有数组并填充该类的构造函数。我定义了一个Get函数。问题是当我在编译时调用此函数时,我收到一个错误,我无法访问类中声明的私有成员。我只是为了yuks重新编码,因此我在舞台前指针和预矢量,所以我试图避免会强迫他们使用的情况。

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

1 个答案:

答案 0 :(得分:3)

构造函数是私有的,因为默认情况下,类的所有成员都是。只需将其移至公共区域即可。