C ++: использовать массив строк, завернутый в пространство имен? - PullRequest
0 голосов
/ 14 июня 2010

Я получил следующий код, желающий красиво обернуть группу строк в пространство имен:

namespace msgs {

    const int arr_sz = 3;
    const char *msg[arr_sz] = {"blank", "blank", "blank" };

    msg[0] = "Welcome, bla bla string 1!\n";
    msg[1] = "Alright, bla bla bla..";
    msg[2] = "etc.";

}

Код внутри прекрасно работает внутри функции, но я не знаю, как вернуть из нее массив. Идея пространства имен выглядит нормально, но возвращается в трех последних строках: error: expected constructor, destructor, or type conversion before ‘=’ token

Почему я не могу определить массив внутри пространства имен, мне нужно сначала что-то сделать?

Это хорошо, потому что я могу назвать это как printf (msgs :: msg [1]) и т. Д. Я хочу сделать это, но я просто не могу понять, что не так: (

1 Ответ

3 голосов
/ 14 июня 2010

Вы можете определить массив внутри пространства имен:

// this is legal
namespace msgs {
    const char *msg[] = {"blank", "blank", "blank" };
}

Чего вы не можете сделать, так это получить оператор вне функции:

// this is a statement, it must be inside a function
msg[0] = "Welcome, lets start by getting a little info from you!\n";

Итак, чтобы исправить свой код, просто используйте правильную строку в определении:

namespace msgs {
    const char *msg[] = {
        "Welcome, lets start by getting a little info from you!\n",
        "Alright, bla bla bla..",
        "etc."
    };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...