2014-04-29 79 views
0

該程序應該從用戶獲得兩個輸入並顯示答案。 這些是我得到的錯誤:C++,錯誤C2448 - 函數式初始化器似乎是一個函數定義

(15):錯誤C2065:X':未聲明的標識符

(15):錯誤C2065:Y':未聲明的標識符

(16沒有找到標識符

:):錯誤C2448: 'writeanswer':函數式初始化似乎是一個函數定義

(30):錯誤C3861: 'writeanswer'

這是我的代碼:

#include "stdafx.h" 
#include <iostream> 
using namespace std; 

int Readnumber() 
{ 
    int num; 
    cin >> num; 
    return num; 
} 

    void writeanswer(x, y) //THIS IS LINE 15 
{ //THIS IS LINE 16 
    int a; 
    a = x + y; 
    cout << "This is the answer: " << a; 
} 


int main() 
{ 
    cout << "Please enter a number: "; 
    int x = Readnumber(); 

    cout << "Please enter another number: "; 
    int y = Readnumber(); 

    writeanswer(x, y); //THIS IS LINE 30 


    system("Pause"); 
    return 0; 
} 

我認爲,在管線30中的錯誤是導致更多的錯誤的主要問題。我試過谷歌,我似乎無法修復它。

編輯:我以爲我試過了,我花了整整一天的時間在這個問題上!感謝所有的答案。

回答

6

C++是強靜態類型的,不是動態類型的。你必須寫出你的參數xy的類型。爲您指定的局部變量a類型的函數體內部

沒錯,你的輸入參數xy指定類型:

void writeanswer(int x , int y) 
+0

你能舉個例子嗎?我是C++的新手,所以我不明白這一點。 – Rampill

+0

@Rampill查看編輯 – Manu343726

1

線15是錯誤的。你應該把它寫方式如下:

void writeanswer(int x, int y) 
4

在函數聲明爲writeanswer,你有

void writeanswer(x, y) 

,但它應該是

void writeanswer(int x, int y) 

編譯器不知道什麼類型的X和y在你的代碼中。它不能暗示主函數的數據類型,因爲它們的作用域僅限於它們聲明的主函數。

在包括MATLAB和Python在內的某些語言中,您不需要始終指定數據類型,因爲它在編譯/解釋時基於您要設置的值的類型而隱式排序。 C++不能像那樣工作。 C++在這方面非常嚴格,您必須在聲明時指定每一種數據類型。