【发布时间】:2021-07-13 03:32:26
【问题描述】:
我正在尝试使用显式分配器初始化向量,但下面的代码似乎不起作用:
vector<int> a1(allocator<int>());
cout << a1.size(); //Error C2228: left of '.size' must have class/struct/union
还有一个工作版本:
vector<int> a2(*(new allocator<int>()));
cout << a2.size(); // OK
还有一个:
vector<int> a3(a2, allocator<int>());
cout << a3,size(); // OK
我想知道为什么只有第一个版本不起作用。我将 MSVC 与 C++17 一起使用,编译器似乎不会将 a1 视为对象。谢谢。
【问题讨论】:
-
a1是一个函数声明。你成了most vexing parse的受害者。 -
@HolyBlackCat 非常感谢!实际上,我对这个术语很陌生。我会检查一下它是如何工作的。
-
你试过vector
a1( allocator { } ); ? -
google“最令人头疼的解析”。
-
@AlessandroTeruzzi 谢谢,这个有效!