无法使用strcpy将字符串复制到静态结构成员

时间:2018-08-20 18:29:15

标签: c++

我正在尝试访问静态结构成员,并在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");
            ^

有人可以解释吗?

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");
}