2013-08-24 70 views
0

,我發現了錯誤:錯誤:預期前主表達式 ']' 令牌

expected primary-expression before ']' token`

在此行中:

berakna_histogram_abs(histogram[], textRad); 

有人知道爲什麼嗎?

const int ANTAL_BOKSTAVER = 26; //A-Z 

void berakna_histogram_abs(int histogram[], int antal); 

int main() { 

    string textRad = ""; 
    int histogram[ANTAL_BOKSTAVER]; 

    getline(cin, textRad); 

    berakna_histogram_abs(histogram[], textRad); 
    return 0; 
} 

void berakna_histogram_abs(int tal[], string textRad){ 

    int antal = textRad.length(); 

    for(int i = 0; i < antal; i++){ 

     if(textRad.at(i) == 'a' || textRad.at(i) == 'A'){ 
     tal[0] + 1; 
     } 
    } 
} 
+3

這不是通過表的功能有道。 – Qiu

回答

2

您正在傳遞表功能錯誤。您應該簡單地:

berakna_histogram_abs(histogram, textRad); 

更重要的是,你首先聲明:

void berakna_histogram_abs(int histogram[], int antal); 

但不是你想定義:

void berakna_histogram_abs(int tal[], string textRad){} 

那這樣你的編譯器認爲,第二個參數是int而不是string。函數的原型應該與聲明一致。

3

在main()函數調用是錯誤的:

berakna_histogram_abs(histogram[], textRad); 

應該是:

berakna_histogram_abs(histogram, textRad); 

您在函數聲明只,但沒有通話功能的時候需要[]

+0

更改爲那給了我這個錯誤:無法將'std :: string {aka std :: basic_string }'轉換爲'int'以將參數'2'轉換爲'void berakna_histogram_abs(int *,int)'| – bryo

+1

@ user1207319'berakna_histogram_abs'聲明的第二個參數 –

3

你的函數調用berakna_histogram_abs是錯誤的main(),它應該是:

berakna_histogram_abs(histogram, textRad); 
//       ^

[]在函數聲明中表示,它需要一個數組,你不必使用它函數調用。

您有另一個錯誤:

功能berakna_histogram_abs的原型爲:

void berakna_histogram_abs(int histogram[], int antal); 
//           ^^^ 

之前main()定義和

void berakna_histogram_abs(int tal[], string textRad){...} 
//         ^^^^^^ 
在你的主,你試圖傳遞一個

而且字符串作爲參數,所以你的代碼應該是:

void berakna_histogram_abs(int histogram[], string antal); 

int main() 
{ 
    // ... 
} 

void berakna_histogram_abs(int tal[], string textRad){ 
    //.... 
} 

而最後一件事:試圖通過引用或const引用,而不是值:

void berakna_histogram_abs(int tal[], string& textRad) 
//          ^

你最終的代碼應該是這樣的:

const int ANTAL_BOKSTAVER = 26; //A-Z 

void berakna_histogram_abs(int histogram[], const string& antal); 

int main() { 

    string textRad = ""; 
    int histogram[ANTAL_BOKSTAVER]; 

    getline(cin, textRad); 

    berakna_histogram_abs(histogram, textRad); 
    return 0; 
} 

void berakna_histogram_abs(int tal[], const string& textRad) { 

    int antal = textRad.length(); 

    for(int i = 0; i < antal; i++){ 

     if(textRad.at(i) == 'a' || textRad.at(i) == 'A'){ 
     tal[0] + 1; 
     } 
    } 
} 
0

錯誤是在通過histogram[]
通過histogram只有
在參數中你已經定義了第二個論點是int,但在定義你卻把第二個參數的功能string
型 變化初始定義

void berakna_histogram_abs(int histogram[], int antal); 

void berakna_histogram_abs(int histogram[], string textRad); 
相關問題