gpt4 book ai didi

c++ - 构造函数中的以下代码会生成警告

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:30 26 4
gpt4 key购买 nike

    mutex_map[key] = PTHREAD_MUTEX_INITIALIZER;

mutex_map 具有以下类型:

    static std::map<std::string, pthread_mutex_t> mutex_map;

在全局范围内的同一个文件中

我收到纯 C++ 的警告

    warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x

我不能完全理解这个警告以及如何解决这个问题

最佳答案

你的 PTHREAD_MUTEX_INITIALIZER在某种程度上等同于初始化列表。

在C++03中,你可以像这样初始化一个数组:

int arr[5] = {1,2,3,4,5};

注意初始化列表。但是,不支持类这样做。

在 C++11 中,他们添加了 std::initializer_list<T> , 所以这种语法是可能的。请考虑以下事项:

std::vector<int> v = {1,2,3,4,5};

或者,更简单:

std::vector<int> v{1,2,3,4,5};

这将适用于 C++11,但不适用于 C++03,因为在 C++11 中, vector 有一个构造函数,它接受一个初始化列表参数。您也可以将其包含在您自己的类(class)中。请注意,后者通常等同于以下内容:

std::vector<int> v ({1,2,3,4,5});

这有助于说明初始化列表现在是实际类型这一点。

如果您想查看 Stroustrup 的简介,我会为您指出他的 C++11 FAQ .

关于c++ - 构造函数中的以下代码会生成警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10457648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com