gpt4 book ai didi

c++ - 访问 ctor 中的私有(private)类内存

转载 作者:行者123 更新时间:2023-11-28 02:06:32 24 4
gpt4 key购买 nike

我有以下智能指针类成员:

T *local_raw_ptr;
const memory_management_type local_type;

其中 memory_management_type 是一个枚举。要对基类进行隐式转换,我想实现这个构造函数:

template<
typename T2,
typename = typename std::enable_if<std::is_base_of<T, T2>::value>::type
>
pointer(const pointer<T2>& ptr):local_type(ptr.local_type), local_raw_ptr(ptr.local_raw_ptr) {};

但是如果我尝试编译它,我会得到这个错误:

pointer<Foo>::local_raw_ptr« is private within this context

为什么我不能在它自己的构造函数中访问这个类的私有(private)成员?我该如何解决这个问题?

最佳答案

因为模板类的每个实例都是与其他类不同的类。

所以如果你有pointer<Foo>pointer<Bar>有两个不同的类和pointer<Foo>无法从 pointer<Bar> 访问私有(private)成员.

您正在尝试访问 local_typepointer<T2>来自 pointer<T>构造函数。事实T2T 的子类型是无关紧要的。

关于c++ - 访问 ctor 中的私有(private)类内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37236042/

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