Если оставить в стороне причины, по которым вы хотите это сделать (что при отсутствии какой-либо другой информации представляется сомнительным, если не сказать больше), самый простой способ - использовать
struct ABC
{
int first;
long second;
};
Но если вы хотите, чтобы члены назывались как-то еще и , вы не хотите прибегать к функциям "получателя" (которые требуют скобок на вызывающем сайте), решение состоит в том, чтобы использовать ссылки для переменных-членов:
struct ABC {
int a;
long b;
int& first;
long& second;
ABC() : first(a), second(b) {}
};
Но если вы примете это, вам нужно написать конструкторов, которые являются частью «правила 5», для правильного связывания ссылок, в противном случае, казалось бы, анодная копия или перемещение не будут работать.
Хотя этот ответ демонстрирует мощь C ++, язык славится своей способностью позволять вам стрелять себе в ногу. Как ни странно, это может показаться причудливым, но вероятность появления любопытных ошибок в качестве вашей кодовой базы и даже самого языка не может быть переоценена. Как таковое, это должно рассматриваться как антипаттерн и использоваться только в действительно исключительных обстоятельствах.