Я хотел бы скопировать в обоих направлениях между энергозависимыми и энергонезависимыми экземплярами класса. Далее используется оператор присваивания для копии. Если макрос «normal_ cpp» определен, все компилируется должным образом. Если макрос не определен, что разрешает «volatile», он копирует энергонезависимый в volatile, но с ошибками наоборот и всегда с ошибками при возврате * this.
Я надеюсь, что кто-то может сказать мне правильный синтаксис, чтобы вернуть * это, и как я могу назначить энергонезависимой для энергонезависимой. Спасибо.
#define ordinary_cpp
#ifdef ordinary_cpp
#define cv_qual
#define thiserrormacro(arg) arg
#define hopefulmacro(arg) arg
#else
#define cv_qual volatile
#define thiserrormacro(arg)
#define hopefulmacro(arg)
#endif
struct Class {
int data;
Class operator = ( Class lhs ) cv_qual {
data = lhs.data;
thiserrormacro(return *this;)
}
};
void test(){
Class nonvol;
Class cv_qual vol;
vol = nonvol;
hopefulmacro(nonvol = vol;)
}