Я не уверен, что кто-нибудь еще создаст временный файл с более коротким именем, когда он будет использоваться во многих строках кода, например, вам нужно получить доступ к чему-то на глубине нескольких классов и вместо того, чтобы снова и снова связывать операторы доступа к элементам вы просто будете использовать более короткое имя временное. Я пытался сделать что-то вроде следующего:
struct Car
{
struct
{
struct
{
int height, width, depth;
} physicalInfo;
} information;
} objectWithARatherLongName ;
int main()
{
auto lambda1 = [] { return objectWithARatherLongName.information.physicalInfo.height; };
// Create a temporary for a shorter name
auto& dimens = objectWithARatherLongName.information.physicalInfo;
auto lambda2 = [=] { return dimens.height; };
// Have to capture "dimens" because it's a local variable
// And over and over again, the shorter way is preferred.
}
В этом случае автоизмерения — это временное короткое имя, но так как я хочу использовать его в лямбде, мне нужно захватить его, что заставило меня подумать, что я должен просто использовать полное имя, которое является глобальным. Есть ли способ сократить это так, как я описал, но все еще использовать глобальную переменную? Я думал о typedef, который будет работать только с типами, верно? Не с реальными объектами.
Не используйте глобальные переменные, но если вам нужно, вы можете добавить еще одну:
struct Car
{
...
} objectWithARatherLongName ;
auto& dimens = objectWithARatherLongName.information.physicalInfo;
int main() { // ...
Других решений пока нет …