2016-11-06 5 views
-4

誰でもエラーを修正できますか?一度に2つの文字列を渡すにはどうすればいいですか?

#include<iostream> 
#include<string> 
using namespace std; 

class base{ 
public: 
    int i,j; 
    char s[10],r[10]; 

    void set(char a, char b){ 
     s[10]=a; 
     r[10]=b; 
    } 

    void show() 
    { 
     cout<<s+std::string(r); 
    } 
}; 

int main() 
{ 
    char a[10],c[10]; 
    cout<<"Enter first string"<<endl; 
    cin>>a; 
    cout<<"Enter second string"<<endl; 
    cin>>c; 
    base b; 
    b.set(a,b); 

    return 0; 
} 

ERROR:

In function 'int main()': 32:14: error: no matching function for call to 'base::set(char [10], base&)' 32:14: note: candidate is: 11:10: note: void base::set(char, char) 11:10: note: no known conversion for argument 2 from 'base' to 'char'

+1

修正するには多すぎるエラーがあります。生のchar配列の代わりに 'std:string'を使うと、多くのことが簡単になります。 –

+0

この関数は2つの文字列を使用しません。 2文字かかります。コードの意図は明確ではないため、修正を提案することは困難です。パススルーや文字列が必要ですか? –

+0

私は2つの文字列を渡して、それらの両方を一緒に印刷したいと思います。 –

答えて

1

あなたのコメントを考えると、あなたの意図は明らかにされています。 setメソッドには、charポインタまたはstd::stringを渡す必要があります。 charは単なる1文字であり、文字列ではありません。

以下は、あなたが望むことをします。

#include<iostream> 
#include<string> 

using std::cin; 
using std::cout; 
using std::string; 

class base 
{ 
    public: 
    string s, r; 

    void set(const string& a, const string& b) 
    { 
     s = a; 
     r = b; 
    } 

    void show() 
    { 
     cout << s << ' ' << r << '\n'; 
    } 
}; 

int main() 
{ 
    string first, second; 

    cout << "Enter first string\n"; 
    cin >> first; 

    cout << "Enter second string\n"; 
    cin >> second; 

    base b; 
    b.set(first, second); 
    b.show(); 
} 
関連する問題