gpt4 book ai didi

c++ - 无法从大括号初始值设定项列表转换为 vector

转载 作者:行者123 更新时间:2023-11-28 02:23:20 25 4
gpt4 key购买 nike

我在下面的代码中观察到编译错误“错误:无法将'{{{&Foo::print_add},{&X::print}}}'从''转换为'std::vector'”。

我是不是 vector 插入有误?顺便说一句,我不想​​使用 push_back 方法。是否可以使用“=”插入。我感觉这是语法错误,但找不到它。

google了一下,发现gcc的早期版本有bug。我使用的是 4.8.1,所以我假设我使用的库应该包含修复程序。

#include <functional>
#include <iostream>
#include <vector>

struct Foo {
Foo(int num) : num_(num) {}
void print_add(int i) const { std::cout << num_+i << '\n'; }
int num_;
};

struct X {
void print() {
std::cout << "I'm in X "<<std::endl;
}
};

struct XXX {
std::function<void(const Foo&,int)> a;
std::function<void(const X&)> b;
};

int main()
{
std::vector<XXX> vec =
{
{
{&Foo::print_add},
{&X::print}
}
};
}

最佳答案

X::print是非 const成员函数,因此指向它的指针不能用于初始化 std::function<void(const X&)> .

关于c++ - 无法从大括号初始值设定项列表转换为 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31529030/

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