【问题标题】:How can i access attributes from another class with pointer如何使用指针访问另一个类的属性
【发布时间】:2020-04-14 05:50:04
【问题描述】:

如何使用 Class 2 中的指针访问姓氏

class Person
    {
    public:
        Person(string firstname, string lastname);
    private:
        string firstname;
        string lastname;
    };

我的班级 2

class Account
{
public: Person getPersonName();
private: const Person* person_;
}

应返回姓氏的.cpp 文件

Person Account::getPersonName()
{
    return person_?;
}

【问题讨论】:

  • 真的很像XY problem。你到底想完成什么?
  • 我希望 getPersonName() 返回姓氏。这种方式不可能吗?我需要姓氏的吸气剂吗?
  • 私有成员只能从类内部访问(某些代码,例如 getter)。不是其他类,甚至不是该类的实例。
  • 我创建了一个 getter 字符串 Person::getLastName() { return lastname_; } 并尝试访问它 Person *Account::getPersonName() { return person_->getLastName();但它不起作用,因为指针是 const 我可以以某种方式访问​​它吗?
  • 声明为string Person::getLastName() const。注意尾随的常量。并阅读 C++ 中 const 方法与 const 引用/指针/对象的全部内容。

标签: c++ class pointers


【解决方案1】:

您不能访问包含它的类之外的类的私有成员。

所以在这种情况下你不能直接访问它们。

但是,您可以在 Person 类中为成员 lastname 创建一个 public getter,然后将其调用Person Account::getPersonName()

或者,您可以定义姓氏 public(不推荐这种方法)。

另一种方法是使用朋友类。我给你一个有用的链接:

Friend Class

【讨论】:

    猜你喜欢
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 2021-07-01
    • 2021-11-27
    相关资源
    最近更新 更多