|
|
1
16
$1.2/4状态
这里“b”是“base”,“n”是“derived”,“r”是“main”。
因此,我们可以得出结论,“base”不是“derived”的可访问类。 $11.2/5州-
自从
编辑2: 研究一些流行的编译器的错误消息,这将帮助您更好地理解。注意“不可访问”这个词是如何在所有错误消息中如此频繁和一致地弹出的。 参考文件来自标准草案N3000。我还没有下载最新的草稿:)
|
|
|
2
35
我怀疑问题在于不能将派生指针转换为基指针,因为继承是私有的。 |
|
3
8
丘斯巴德提供了一个涉及该标准的深入解释,我将尽力提供一个易于理解的解释。
在C++中,有3个访问级别说明符:
在这里,你选了
因此,“外部”并不知道这种关系。这是由编译器用这个
从设计的角度来看,
|
|
|
4
6
你知道
因此,当你试图分配
|
|
|
5
5
试试这个:
|
|
|
6
1
这将产生错误C2243:“类型转换”:存在从“derived*”到“base*”的转换,但无法访问 此派生类已被私有继承,因此在Derieved get创建时不会创建基类对象。要创建派生对象,首先调用创建未发生的基类对象。 解决方法是公开派生类。无论您是否将虚拟关键字与成员函数一起使用,这都无关紧要。 |
|
|
7
0
您需要将基类中的sid()函数声明为虚函数。可以用派生类替换虚拟函数。否则,您可能会得到一个编译器错误。 |
|
AstralHex · 矩阵乘法代码工作不正常 9 月前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 9 月前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 9 月前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 9 月前 |