Я новичок в кодировании c ++ и мне нужно поменять / заменить старый мультикартный объект на недавно построенный мультикартный объект, так как этот объект будет кэшироваться. Я хотел бы заменить существующий объект только после создания нового объекта и просто заменить сам объект. Это будет использоваться в многопоточной среде, поэтому используется атомарная загрузка. Как описано в этой теме Хотите эффективный способ поменять местами два указателя в C ++ . Я написал этот код
#include<iostream>
#include<map>
#include<atomic>
#include<string>
using namespace std;
// MultiMap Object
struct mmap{
multimap<string,int> stringTointmap;
};
// Structure to swap two instances of multimap
struct swapMap{
mmap* m1;
mmap* m2;
};
int main(){
//create Two Objects
mmap* old = new mmap();
mmap* new2= new mmap();
// populate first object
old->stringTointmap.insert(make_pair("old",1));
//populate second object
new2->stringTointmap.insert(make_pair("new1",2));
//swap two objects
atomic<swapMap> swap;
auto refresh=swap.load();
refresh= {swap.m2,swap.m1};
}
Но я получаю эту ошибку
error: expected expression
refresh= {swap.m2,swap.m1};
определенно, я что-то упустил, кто-то может помочь?