-6

假设我有两个班级Class AClass B.

class A {
    uint32 A_1;
    uint32 A_2;
    uint32 A_3;
    uint32 A_4;
} 

第一个问题:如何使类 A 的类成员对uint_32 A_1, A_2, A_3, A_4从类 B 创建的对象可见?

// 从 B 类创建的对象如下:

Object_B = new Class B(); 

对于第一个问题,我使 A 类成员对 B 类可见的语法如下:

Class A(Class B *);

第二个问题:如何uint_32 A_1, A_2, A_3, A_4通过我创建的对象访问 A 类的那些类成员()Object_B:?

下面是第二个问题的语法:

Object_B->A_1;

两个类的上述语法是否正确?

另外,请为我提供一些 C++ 中的类、对象的良好链接,以便我可以深入阅读。

4

2 回答 2

3
new A( B * bPointer);

告诉我们类型 A 的对象拥有指向类型 B 的指针。这绝不会将 B 与 A 关联起来。

事实上,如果这是一个设计良好的类,B 不应该知道 A。这使您的第二个问题没有实际意义。所以你应该问的一个重要问题是,你为什么想要这种关系。A和B之间的语义关系是什么?

它是一本书(Page* pages) 吗?

于 2013-03-01T21:19:15.943 回答
0

从链接: http: //publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp ?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fcplr129.htm

受保护的成员(仅限 C++)

受保护的非静态基类成员可以由从该基类派生的任何类的成员和朋友使用以下方法之一访问:

指向直接或间接派生类的指针 对直接或间接派生类的引用 直接或间接派生类的对象

如果一个类是从基类私有派生的,则所有受保护的基类成员都将成为派生类的私有成员。

如果在友元或派生类 B 的成员函数中引用基类 A 的受保护非静态成员 x,则必须通过指向 A 派生类的指针、引用或对象来访问 x。但是,如果如果您正在访问 x 以创建指向成员的指针,则必须使用命名派生类 B 的嵌套名称说明符限定 x。以下示例演示了这一点:

 class A {
  public:
  protected:
  int i;
  };


  class B : public A {
  friend void f(A*, B*);
  void g(A*);
  };

  void f(A* pa, B* pb) {
  //  pa->i = 1;
  pb->i = 2;

 //  int A::* point_i = &A::i;
 int A::* point_i2 = &B::i;
  }

void B::g(A* pa) {
//  pa->i = 1;
i = 2;

//  int A::* point_i = &A::i;
int A::* point_i2 = &B::i;
}

void h(A* pa, B* pb) {
//  pa->i = 1;
//  pb->i = 2;
}

int main() { }
于 2013-03-01T21:44:02.047 回答