钻石问题不能通过使用找到的第一个继承声明来解决吗?我是说,
公共类 A { 公共虚拟 int getInt(); }; 公共类 B:公共 A { 公共 int getInt() {返回 6;} }; 公共类 C:公共 A { 公共 int getInt() {返回 7;} }; 公共类 D:公共 B,公共 C {};
for class D
,因为B
首先列出,我们不能默认(当它不明确时)使用B::getInt()
ifD::getInt()
被调用吗?PATH 环境变量在 UNIX 和其他操作系统中的工作方式;如果在 PATH 变量中的不同位置存在两个具有相同名称的事物,则默认情况下应使用第一个位置(除非另有限定)。
编辑:通过“第一个”继承声明找到我的意思是根据简单的从左到右深度优先顺序
编辑#2:刚刚更新了上面的实现,使其更像钻石。