2016-11-06 40 views
-4

任何人都可以修復錯誤嗎?如何一次傳遞兩個字符串

#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; 
} 

錯誤:

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

有太多的錯誤需要解決。使用'std:string'而不是原始字符數組,這將使許多事情變得更容易。 –

+0

該函數不需要2個字符串。它需要2個字符。您的代碼目的不明確,因此很難提出修復建議。你想傳遞字符串或字符? –

+0

我想傳遞兩個字符串,然後將它們都打印在一起。 –

回答

1
鑑於您的評論

,你的意圖已經闡明。您需要將char指針或std::string s傳遞給set方法。 char只是一個字符,而不是一串字符。

以下將做你想要的。

#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(); 
} 
相關問題