gpt4 book ai didi

用于类声明的 C++ 模板

转载 作者:太空宇宙 更新时间:2023-11-04 15:42:10 25 4
gpt4 key购买 nike

因此,我可以执行以下操作:

template<typename T>
void printValue(T theValue)
{
std::cout << theValue;
}

int main()
{
/.....
int value = 5;
printValue(value);

return 0;
}

但是如果我想为一个类做以下事情:

template<class Type_T>
class Foo {

public:
template<typename Inverse>
Foo(Inverse begin, Inverse end)
: values(begin, end)
{



}

protected:

std::vector<Type_T> values;
};

int main() {

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

Foo<int> f(va.begin(), va.end());

return 0;
}

我必须说明类型。有没有一种方法可以让编译器通过了解正在传递的迭代器的类型来决定类型?

最佳答案

您可以创建一个辅助函数 make_foo(),它根据给定的参数推导出类型:

template<typename U>
Foo<typename U::value_type> make_foo(U first, U last)
{
return { first, last };
}

auto f = make_foo(va.begin(), va.end());

关于用于类声明的 C++ 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21365564/

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