【发布时间】:2012-10-14 22:15:48
【问题描述】:
我正在实现一个模板函数,它将参数迭代器指向的序列的前 n 个元素的值设置为调用生成器函数返回的值。
我有以下代码:
template <typename IteratorOut, typename SizeType, typename Generator> IteratorOut createSequence(IteratorOut out, SizeType n, Generator gen) {
std::vector<Generator> vec;
for (SizeType i = 1; i <= n; i++) {
vec.push_back(gen());
}
std::copy(vec.begin(), vec.end(), out);
return out;
}
我正在使用以下功能测试该功能:
int generate () {
return 5;
}
...
std::vector<int> vec_int;
createSequence(vec_int.begin(), 5, generate);
for (std::vector<int>::iterator iter = vec_int.begin(); iter != vec_int.end(); iter++) {
std::cout << *iter << std::endl;
}
我收到“错误:从‘int (*)()’到‘int’的无效转换”。你能看出我的模板函数有什么问题吗?
【问题讨论】:
-
您确定您的错误信息吗?我反过来理解:“错误:从‘int’到‘int (*)()’的无效转换”。顺便说一句,您使用的是哪个编译器?