C ++:使用命名空间包装的字符串数组?

时间:2010-06-14 05:30:03

标签: c++ arrays string namespaces

我得到了以下代码,希望在命名空间中很好地包装一组字符串:

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 个答案:

答案 0 :(得分:3)

您可以在命名空间中定义数组:

// 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."
    };
}