#include <Windows.h>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
class CTest
{
public:
template<typename... Args>
void AddStringsToVector(const std::string &First, Args&... args);
private:
std::vector<std::string> m_stringsvec;
};
template<typename... Args>
void CTest::AddStringsToVector(const std::string &First, Args&... args)
{
m_stringsvec.push_back(First);
m_stringsvec.push_back(args...);
for (auto &i : m_stringsvec)
std::cout << i << std::endl;
}
void main()
{
CTest test;
test.AddStringsToVector("test1","test2","test3");
system("pause");
}
仅在我传递两个参数时有效:
test.AddStringsToVector("test1","test2");
如果我传递了其他任意数量的参数,那么我会得到两个错误。
例如:
test.AddStringsToVector("test1","test2","test3");
错误:严重级代码描述项目文件行错误C2661'std :: vector> :: push_back':没有重载函数使用2个参数
递归调用该函数。
void CTest::AddStringsToVector()//function to break recursion
{
}
template<typename... Args>
void CTest::AddStringsToVector(const std::string &First, Args&... args)
{
m_stringsvec.push_back(First);
AddStringsToVector(args...);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句