#include <iostream>

using namespace std;

class A {
      private :
              typedef struct {
                      int a;
                      int j;
                      }type;
      public :
             A(){};
            ~A(){};
            void CreateInstance();
        };

class B : public  A
{
      private :
              int d;
              int n;
      public :
             B(){};
            ~B(){};
            void CreateInstance1();

};


void A :: CreateInstance()
{
 A::type A;
 A.a = 0x10;
 cout << " Val = " << A.a << endl;
}

void B :: CreateInstance1()
{
 // I want to create a Pointer/instance of structure in this function. Dont want to use Public method in Class A
 A::type A;
 A.a = 0x10;
 cout << " Val = " << A.a << endl;
}

int main()
{
 A obj;
 obj.CreateInstance();
 B obj1;
 obj1.CreateInstance1();
 cin.get();
 return 0;
}


我期待对此有一些建议。


我如何在派生类中创建实例结构“类型”。


请让我知道如何使用“数据类型”。


  错误:“ typedef struct A :: type A :: type”为私有。


提前致谢。

最佳答案

您不能使用基类中的任何private,这是语言的规则。

但是,您可以使用任何公共或受保护的内容。在您的情况下,可能足以调用基类函数CreateInstance

void B :: CreateInstance1()
{
    A::CreateInstance();
}


(通常最好保持内聚的命名方式:如果适用,请考虑将函数CreateInstance声明为虚函数,然后将CreateInstance1重命名为CreateInstance以覆盖A::CreateInstance。这与问题无关,虽然)。

关于c++ - 访问私有(private)数据类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19935649/

10-13 06:58