从派生 * 到基 * 的转换存在,但无法访问
conversion from derived * to base * exists but is inaccessible
为什么即使 c 是结构体并且默认情况下具有公共继承,下面的代码也会产生此错误?
struct c
{
protected:
int i;
public:
c(int ii=0):i(ii){}
virtual c *fun();
};
c* c::fun(){
cout<<"in c";
return &c();
}
class d : c
{
public:
d(){}
d* fun()
{
i = 9;
cout<<"in d"<<'t'<<i;
return &d();
}
};
int main()
{
c *cc;
d dd;
cc = ⅆ
cc->fun();
}
你需要:
class d : public c
默认情况下class
继承private
。
当您私下从class
或struct
继承时,您明确表示,除其他事项外,无法从派生类型直接转换为基类型。
相关文章:
- C ++基础私有方法在将自身转换为派生类后可以访问吗?
- 从父类的向量访问子类函数,而无需向下转换
- 有没有办法通过 main 函数访问受保护的矢量大小而无需将其转换为公共?
- 从 uint32_t 转换为 wchar_t 并存储在 wstring 中时出现访问冲突
- 如何避免强制转换运算符 () 和访问运算符 [] 冲突?
- 为了访问方法,从基类动态转换为派生类
- 为什么不能指向指针,在没有强制转换的情况下访问结构成员?
- C 指针转换会导致内存访问冲突
- 将对象强制转换为派生类以访问父类的受保护成员
- C++ 0xCCCCCCCC将字符串转换为 int 写入访问冲突_Left
- 将多面体转换为nef(违反访问)时,与CGAL崩溃
- 将typeID转换为静态成员访问(C )的命名空间
- 将std ::向量转换为阵列和当时的p/调用它会导致访问违规例外,在编组期间mscorlib.dll
- 将静态库转换为 DLL 会导致在 main 之前出现访问冲突
- 通过指针访问数据(重新解释转换)与 .或 ->运算符
- 如何转换 void* 以访问结构的静态数据成员?
- 访问C 转换器构造函数中无关类的类的私人数据成员
- 在Linux/GCC下,将NULL指针访问转换为C++异常
- 访问转换后的纹理的像素数据
- 正在将注册表访问转换为MFC功能包中的数据库调用