2013-02-07 39 views
0

首先,我知道这是一件可怕的事情,因为它可能需要大量的内存复制......但是由于我已经给出了规范,因此需要完成它。在C++中通过值传递字符串和向量

无论如何,我想通过引用传递一个字符串和一个值的向量,因为它将被编辑然后被销毁,然后原始的将被再次使用。

下面是函数原型

int print (const string& findme,const string& command,const string& command2,const string& command3, int n, vector<string> list) 

,这里是我的电话,所有变量都是正确的类型。

print (special,command,command2,command3,n,temp); 

一切编译和运行的时候,我不试图调用函数......但是当我做我得到这个错误:

a2p1.cc: In function âint main(int, char**)â: 
a2p1.cc:85: error: no match for call to â(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >) (std::string&, std::string&, std::string&, std::string&, int&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)â 

所以我想知道......我应该怎么将这些字符串和向量传递给函数,字符串可以通过引用传递,但我需要向量的副本,任何语法帮助都会非常有帮助!谢谢!

这里是变量

int n; 

    string command = "rr"; 
    string command3 = "null"; 
    string command2 = "f"; 
    string japan; 
    string special; 
    special = "fnord"; 
    string textFileName; 

    vector<string> list; 
    vector<string> print; 

这里是调用函​​数,上线83:

while (cin >> inputtemp) 
{ 
... 

if ((inputtemp == "p")){ 

print (special,command,command2,command3,n,list); 

}// If 
}// While 
+0

什么是函数定义? – Rapptz

+0

你刚刚尝到了一些模板调试的好处。 –

+0

我很抱歉,但功能定义相当庞大,而且由于知识产权问题,我实际上无法发布它。 –

回答

1

你有两种功能:和一个名为print变量。

你实际上没有调用print函数。

重命名变量。

(你的函数原型是正确的,它会做你的描述)在你的错误再次

看看,看看这个。 (我删除了模板,使其更简单)

error: no match for call to (std::vector) (std::string&, std::string&, std::string&, std::string&, int&, std::vector&)