如何从成员函数返回私有char数组?

时间:2016-08-12 14:16:26

标签: c++

如何将private char“n”从成员函数返回到main函数?

#include <iostream>
using namespace std;
class TEST
{
    char n[10];
public:
    char getname()
    {
        cout<<"what's your name?:";
        cin.getline(n,10);
        return n;
    }
};
int main()
{   char name[10];
    TEST obj;
    name[10]=obj.getname();
    cout<<"Name :"<<name;
}

2 个答案:

答案 0 :(得分:0)

私人或公众无所谓。您的问题是返回char而不是char*

我建议你使用字符串而不是char数组。

#include <iostream>
using namespace std;
class TEST
{
    char n[10];
public:
    char* getname()
    {
        cout<<"what's your name?:";
        cin.getline(n,10);
        return n;
    }
};
int main()
{   
    char* name;
    TEST obj;
    name = obj.getname();
    cout<<"Name :"<<name;
}

答案 1 :(得分:0)

  

如何将私有字符“n”从成员函数返回到主函数?

您可以返回指向类中private标签下的字符数组的第一个元素的指针。为此,您需要将getname函数的函数定义更改为char *getname()

另外,我想指出你在main函数中犯的一些错误。看看我的版本:

#include <iostream>
using namespace std;
class TEST
{
   char n[10];
public:
    char* getname()
    {
        cout<<"what's your name?:";
        cin.getline(n,10);
        return n;
   }  
};
int main()
{   
   TEST obj;
   char *name = obj.getname();
   cout<<"Name :"<<name;
}

但是将引用或指针返回给类的私有成员并不是一个好习惯。公开任何内部实现细节可能违反了封装。您可以定义将对您的私有数据成员执行所需操作的成员函数,而不是提供对类的私有数据成员的访问。

另外,请尽量避免使用using namespace