gpt4 book ai didi

c++ - 简单参数转发(我的签名应该是什么?)

转载 作者:行者123 更新时间:2023-11-30 00:50:47 25 4
gpt4 key购买 nike

举个例子,假设我正在为 vector 的 push_back 方法编写一个薄包装器。

class Foo
{
public:
void myPushBack(Bar b); // Line in question
private:
std::vector<Bar> vec;
}

void Foo::MyPushBack(bar b)
{
vec.push_back(bar);
}

main()
{
Foo f();
f.myPushBack();
}

我的问题是函数 myPushBack 的正确签名是什么? ?那么我的下一个问题是函数 myPushBack 的正确签名是什么?如果vec类型为 std::vector<weak_ptr<Bar>>

最佳答案

假设您使用的是 C++11,您应该使用完美转发习惯用法:

template<typename T> void Foo::MyPushBack(T &&b)
{
vec.push_back(std::forward<T>(b));
}

因为它是一个模板,所以它与 vector 的实际类型无关。它甚至会考虑隐式转换,例如 const char*std::string

关于c++ - 简单参数转发(我的签名应该是什么?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23812201/

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