Почему я получаю эту ошибку? «[переменная] не называет тип» в C ++ для массива std :: string, даже если он был включен и находится в той же области - PullRequest
1 голос
/ 07 августа 2020

Я хотел создать ASCII-Art, который печатал бы текст с символами ASCII, а потом у меня ничего не вышло. потому что я уже час пытаюсь решить эту ошибку и не могу найти решение.

код:

#include <iostream>
#include <string>
class prnter {
public:
    void print(std::string text) {
        if (text == "A") {

            for (int i = 0;i < 5;i++) {
                std::cout << lett[A][i] << std::endl;
            }


        }


    }


        enum Letters {
        A, // 0
        B, // 1
        C, // 2
        D, // 3
        E, // 4
        F, // 5
        G, // 6
        H, // 7
        I, // 8
        J, // 9
        K, // 10
        L, // 11
        M, // 12
        N, // 13
        O, // 14
        P, // 15
        Q, // 16
        R, // 17
        S, // 18
        T, // 19
        U, // 20
        V, // 21
        W, // 22
        X, // 23
        Y, // 24
        Z  // 25
        };
        std::string lett[26][5];
        lett[A][0] = " _____";
        lett[A][1] = "/     \\";
        lett[A][2] = "| /_\\ |";
        lett[A][3] = "| | | |";
        lett[A][4] = "|_/ \\_|";

};


И я получаю эту ошибку:

include\prnter.h|48|error: 'lett' does not name a type; did you mean 'getw'?|
include\prnter.h|49|error: 'lett' does not name a type; did you mean 'getw'?|
include\prnter.h|50|error: 'lett' does not name a type; did you mean 'getw'?|
include\prnter.h|51|error: 'lett' does not name a type; did you mean 'getw'?|
include\prnter.h|52|error: 'lett' does not name a type; did you mean 'getw'?|

Я новичок в C ++. Я подумал, что использование многомерных массивов будет хорошей идеей, как вы думаете, что может решить эту проблему? Могу ли я использовать вместо этого векторы?

1 Ответ

2 голосов
/ 07 августа 2020

У вас не может быть «нормальных» операторов вне функций. Только объявления и определения.

В вашем случае вы можете решить проблему, инициализировав массив, когда вы его определяете:

std::string const lett[26][5] = {
    // A
    {
      " _____",
      "/     \\",
      "| /_\\ |",
      "| | | |",
      "|_/ \\_|"
    },
    // B
    { .... }
    ....
};
...