【问题标题】:Classes, Privates through Publics类,通过公共的私人
【发布时间】:2013-07-24 09:18:10
【问题描述】:

我试图了解如何通过公共课程访问私人课程,因为一些专家对我说我必须只使用私人课程。但我不明白为什么这不起作用。我真的不知道如何通过 public 访问私有它真的很混乱。

#include <iostream>
#include <string>
using namespace std;

class ManolisClass{

public :
    void setName(string x){
        name = x;
    }

    string getName(){
        return name;
    }

private :
    string name;
};

int main()
{
    ManolisClass bo;
    getline(cin, bo.setName() );
    cout << bo.getName();
    return 0;
}

【问题讨论】:

  • 通过公有类访问私有类?你说的是继承吗?我很困惑
  • 到底是什么问题?它编译吗?它会产生意想不到的结果吗?请扩展您的问题。
  • 对不起,我真的很抱歉......但我现在正在学习这个!他们对我说,我必须只使用私人课程,而不是公开课程。
  • 当人们说要使用私有数据成员时,他们并不是要使用 setter 和 getter 来公开所有这些成员。这会破坏你的类所做的任何抽象的意义。
  • 您的getline 呼叫错误!您将setName 成员函数调用的result 传递给它,但它不返回任何内容。 setName 函数还需要一个输入参数,您没有提供该参数。您需要将输入存储在一个临时变量中,并使用此变量调用setName

标签: c++ class private public


【解决方案1】:

您的访问方法是正确的,但是从函数 setName 的签名中可以看出,您必须提供一个字符串来设置类的名称。 getLine 方法将字符串作为参数。您可以创建一个中间变量并使用该变量来设置类的名称。

这里是如何做到这一点的。

string temp;
getline(cin, temp);
bo.setName(temp);

【讨论】:

  • 谢谢!这就是我想要的!太感谢了!一些专家对我说,我只能使用私人课程,因为公共课程是糟糕的编程,我现在正在学习,所以我必须听他们的!谢谢
猜你喜欢
  • 2015-12-11
  • 2013-03-18
  • 2020-01-06
  • 2014-07-14
  • 2014-03-20
  • 2016-05-30
  • 2017-02-17
  • 2012-08-03
  • 2011-01-09
相关资源
最近更新 更多