2017-02-12 74 views
-1

我有一個字符串可以通過函數打印。我正在使用turbo-c編譯器。函數應該有一個原型,同時在類中聲明

在使用過程方法,我可以從下面的代碼做到這一點:

#include <iostream.h> 
#include <conio.h> 

void strr(char name[]); 
void main(){ 
    char name1[10]; 
    cout << "Enter name"; 
    cin >> name1; 
    strr(name1); 
    getch(); 
} 

void strr(char name[]){ 
    cout << name; 
} 

但OOP方法我不能打印的字符串。我的代碼是:

#include <iostream.h> 
#include <conio.h> 

class name{ 
    public: void strr(char name[]); 
}; 

void main(){ 
    char name1[10]; 
    cout << "Enter name"; 
    cin >> name1; 
    strr(name1); 
    getch(); 
} 

void name::strr(char name[]){ 
    cout << name; 
} 

使用oop方法我得到錯誤Function 'strr' hould have a prototype

+1

您正在使用的strr函數不是名稱類中的函數。 – 2017-02-12 04:10:35

+0

順便說一下,'main'函數返回'int'。 **總是**。 –

+0

此外,更喜歡使用'std :: string'作爲文本而不是字符數組。數組受到緩衝區溢出的影響,並且很難傳遞給函數。 –

回答

3

因爲你的函數定義在類內部,你需要的name類的對象/實例來調用它:或者

name obj; 
cin >> name1; 
obj.strr(name1); 

,如果你聲明函數爲靜態的,那麼你可以調用它,而不一個類的實例中,由於該函數是類功能

class name{ 
    public: static void strr(char name[]) {cout << name << endl;} 
}; 

... 

cin >> name1 
name::strr(name1); 
+0

感謝它從我腦海中滑落 –

-1

嘗試此 名::空隙STRR(字符名稱[]) {}

相關問題