gpt4 book ai didi

c++ - 成员类应该如何访问成员函数?

转载 作者:行者123 更新时间:2023-11-28 00:27:13 25 4
gpt4 key购买 nike

这是一个找出更好的编程实践的问题:

在 C++ 中,假设我有两个类,其中一个是另一个的成员类,例如,

class SomeClass {

public:

MemberClass member_class;

void set_num(double num_) { num_ = num; }

double num() {return num_; }

private:

double num_;

}

我希望成员类可以访问外部类的成员函数,例如

class MemberClass {

public:

PrintSquare() {

cout << num() * num() << endl;

}

}

我正在努力实现这一目标,以减少我在整个程序中传递的函数参数的数量。

最佳答案

解决这个问题的最常见(也是恕我直言)的方法是,为包含类引入一个接口(interface)(或者更多的接口(interface)专注于特定的方法特性集),并将该接口(interface)传递给 'inner ' 构造类成员:

struct Interface {
virtual void set_num(double num_) = 0;
virtual double num() const = 0;
virtual ~Interface() {}
};

class MemberClass {
public:
MemberClass(Interface& interface) : interface_(interface) {}
PrintSquare() {
cout << interface_.num() * interface_.num() << endl;
}

private:
Interface& interface_;
};

class SomeClass : public Interface {
public:
MemberClass member_class;

SomeClass() : member_class(*this), num_() {}

virtual void set_num(double num_) { num_ = num; }
virtual double num() const { return num_; }
virtual SomeClass() {}

private:
double num_;
};

注意:当从 MemberClass 构造函数定义调用时,接口(interface)的调用方法将失败(出现运行时异常)。

关于c++ - 成员类应该如何访问成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24417879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com