C++ 类中的结构方法

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

我有几个类使用与私有成员相同的结构。 是否可以创建可以从类/在类中使用的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 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();