我正在尝试访问静态结构成员,并在c ++ 11中使用字符串复制对其进行设置,但我在执行该方法时未发现问题。
#include <cstdio>
#include <cstring>
struct x {
char a;
static char s[20];
};
char x::s[20] = "instance 1";
std::strcpy(x::s,"instance 1");
struct x A = {'A'};
struct x B = {'B'};
我收到以下错误
main.cpp:18:12: error: expected constructor, destructor, or type conversion before '(' token
std::strcpy(x::s,"instance 1");
^
有人可以解释吗?
答案 0 :(得分:0)
如评论中所述,该行
std::strcpy(x::s,"instance 1");
看起来像是编译器的临时变量,它尝试构造std::strcpy
的实例而不是调用函数。
至少此行必须位于函数体内,例如
struct x {
char a;
static char s[20];
};
char x::s[20] = "instance 1";
int main(int, char **)
{
std::strcpy(x::s,"instance 1");
}