C ++,表达式必须是可修改的左值

时间:2017-01-01 15:06:03

标签: c++

我有以下代码:

#include "stdafx.h"
#include<iostream>
using namespace std;

const int x = 5;
bool graf_adj[x][x] = {
0,1,1,1,0,
1,0,1,0,0,
1,1,0,1,1,
1,0,1,0,0,
0,0,1,0,0
};
struct Graf
{
    bool adj[x][x];
    char n;
};

int main(){
Graf graf1;
graf1.adj = graf_adj;
}
当我尝试将graf_adj分配给graf1.adj时,在主函数中

   graf1.adj = graf_adj; 编译器给了我这个错误:

  

错误表达式必须是可修改的左值

有人能解决这个问题吗?

谢谢

1 个答案:

答案 0 :(得分:0)

现在您已添加了const的类型:

以下是使用memcpy的解决方案

#include<iostream>
#include <cstring>
const int x = 5;
bool graf_adj[x][x] = {
0,1,1,1,0,
1,0,1,0,0,
1,1,0,1,1,
1,0,1,0,0,
0,0,1,0,0
};
struct Graf
{
    bool adj[x][x];
    char n;
};

int main(){
Graf graf1;
std::memcpy(&graf1.adj, &graf_adj, sizeof(graf1.adj));
}