【发布时间】:2016-08-15 12:22:57
【问题描述】:
我在成员函数中使用静态向量并将值推回该向量; 但是三个函数调用的向量大小只有1。
我不确定如何为此制作 MVCE,因为在 MVCE 中它对我来说也可以正常工作,所以问题显然是代码的其他部分。 我只是想知道或知道在什么情况下我的静态向量会给我这样的结果。
class X
{
//...
};
template <typename T>
void test(T a)
{
std::cout<<"Function called \n";
static std::vector<X> vec;
std::lock_guard<std::mutex> lock(mx);
//Doing something else with T
X obj;
vec.push_back(obj);
std::cout<<"no of elements in vec is "<<vec.size()<<"\n";
}
输出是
Function called
no of elements in vec is 1
Function called
no of elements in vec is 1
Function called
no of elements in vec is 1
从 CPPREST http_client 请求调用中调用成员函数。
【问题讨论】:
-
你用不同类型的
T给test()打了3次电话吗? -
是的。但是测试的类的实例是相同的。
-
那么有 3 个不同的
test()和 3 个不相关的vec实例。 -
知道了.. 非常感谢。我不知道。我认为只有一个类实例,所以应该有一个向量。非常感谢。
-
@songyuanyao 您可以在答案中提及相同的内容,以便我可以接受它作为正确答案。谢谢。