0

最初に、大量のメモリコピーが必要になる可能性があるため、これを行うのはひどいことだとわかっています...しかし、指定された仕様のために実行する必要があります。

とにかく、参照によって文字列を渡し、値によってベクトルを渡そうとしています。これは、編集されてから破棄され、元のものが再び使用されるためです。

ここに関数のプロトタイプがあります

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
4

1 に答える 1

1

という名前の関数と変数の両方がありますprint

実際に関数を呼び出しているわけではありませんprint

変数の名前を変更します。

(あなたの関数プロトタイプは正しいです。それはあなたが説明したことを行います)

これを確認するには、エラーをもう一度見てください。(見やすくするためにテンプレートを削除しました)

error: no match for call to (std::vector) (std::string&, std::string&, std::string&, std::string&, int&, std::vector&)
于 2013-02-07T03:29:31.653 に答える