我得到了以下代码,希望在命名空间中很好地包装一组字符串:
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])等。我想这样做我只是无法绕过什么错误:(
答案 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."
};
}