#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/