Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 简单参数转发(我的签名应该是什么?)_C++_Arguments_Weak Ptr - Fatal编程技术网

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

C++ 简单参数转发(我的签名应该是什么?),c++,arguments,weak-ptr,C++,Arguments,Weak Ptr,例如,假设我正在为向量的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(); } class-

例如,假设我正在为向量的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();
}
class-Foo
{
公众:
void myPushBack(条b);//有问题的行
私人:
std::vec;
}
void Foo::MyPushBack(条形图b)
{
矢量推回(巴);
}
main()
{
Foo f();
f、 myPushBack();
}

我的问题是函数
myPushBack
的正确签名是什么?然后我的下一个问题是,如果
vec
的类型是
std::vector
,那么函数
myPushBack
的正确签名是什么?

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

模板void Foo::MyPushBack(T&b)
{
向量向后推(标准::向前(b));
}

因为它是一个模板,所以向量的实际类型无关紧要。它甚至会考虑隐式转换,例如
constchar*
std::string

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

模板void Foo::MyPushBack(T&b)
{
向量向后推(标准::向前(b));
}

因为它是一个模板,所以向量的实际类型无关紧要。它甚至会考虑隐式转换,例如
constchar*
std::string

通用引用如何?通用引用如何?
template<typename T> void Foo::MyPushBack(T &&b)
{
   vec.push_back(std::forward<T>(b));
}