2017-02-12 45 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(字符名称[]) {}

相关问题