gpt4 book ai didi

c++ - 如何使用模板修复 "too many initializers for ` 一些结构`"

转载 作者:搜寻专家 更新时间:2023-10-31 00:26:53 25 4
gpt4 key购买 nike

我有一个名为 WtHasher 的结构

template <typename V>
struct WtHasher {
Ul (*hasher(V&));
bool (*comparator(V&, V&));
};

当我尝试使用大括号样式创建此结构的对象时,出现错误

... some code ...

WtHasher<int> hasher = {
[] (int &k) {return (Ul)k;},
[] (int &a, int &b) {return a == b;}
};

... some code ...

错误:

error: too many initializers for ‘WtHasher<int>’
};
^

这是为什么呢?结构中有 2 个字段,大括号中有 2 个字段,因此应该适合。

最佳答案

如果要声明指向函数的指针,应该是 Ul (*hasher)(V&);bool (*comparator)(V&, V&);。否则它只是一个成员函数声明(参见 Most vexing parse )。

关于c++ - 如何使用模板修复 "too many initializers for ` 一些结构`",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50897588/

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