C++ 类中的结构方法
我有几个类使用与私有成员相同的结构。 是否可以创建可以从类/在类中使用的struct getter函数? 我想创建funcs。因为不是每节课都是正确的方式 大概是这样的:C++ 类中的结构方法,c++,C++,我有几个类使用与私有成员相同的结构。 是否可以创建可以从类/在类中使用的struct getter函数? 我想创建funcs。因为不是每节课都是正确的方式 大概是这样的: someheader struct A { A(const int& vl) : someval(vl) {} int someval{0}; int getSomeval() const {return someval;} }; B include "someheader.h" class
someheader
struct A {
A(const int& vl) : someval(vl) {}
int someval{0};
int getSomeval() const {return someval;}
};
B
include "someheader.h"
class B {
public:
B();
private:
A a;
};
int main() {
B b;
int v = b.getSomeval();
}
Edit:正如@HolyBlackCat提到的,使用私有继承而不是私有成员,然后使用
语句将私有基类的成员函数引入公共范围:
class B : A {
public:
B(int i) : A(i) {}
using A::getSomeval; /*
^^^^^^^^^^^^^^^^^^^^ */
};
int main() {
B b(42);
std::cout << b.getSomeval() << std::endl;
}
或使A
成为B
的公共数据成员:
class B {
public:
B(int i) : a(i) {}
A a;
};
B b(42);
b.a.getSomeval();
然而,这种方法破坏了封装
大多数IDE将为您自动构造getter和setter函数-您不一定需要手工编写它们。主题之外,但为什么要在构造函数中使用int作为引用?朋友……。作为公共继承的替代方法,可以使用私有继承,并使用公共:
使用A::getSomeval代码>。我不知道这是一件事。谢谢
class B {
public:
B(int i) : a(i) {}
A a;
};
B b(42);
b.a.getSomeval();