gpt4 book ai didi

c++ - 访问私有(private)数据类型

转载 作者:行者123 更新时间:2023-11-28 03:05:01 25 4
gpt4 key购买 nike

#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;
}

我期待对此提出一些建议。

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

请告诉我如何使用“数据类型”。

Error : 'typedef struct A :: type A :: type' is Private.

提前致谢。

最佳答案

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

但是,您可以使用任何公开或 protected 内容。在您的情况下,调用基类函数 CreateInstance

可能就足够了
void B :: CreateInstance1()
{
A::CreateInstance();
}

(一般来说,最好保持连贯的命名:如果适用,考虑将函数 CreateInstance 声明为虚拟函数,然后将 CreateInstance1 重命名为 CreateInstance使其覆盖 A::CreateInstance。不过,它与问题无关)。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com