24小时在线 - 古典小说 - 文学小说 - 关于我们
您的当前位置:首页 > 开发语言 > C++ >

C++ - 多重继承(multiple inheritance)歧异(ambiguous)

来源:比特技术 编辑:比特技术网 时间:2018-05-19点击:
导读:C++ - 多重继承(multiple inheritance)歧义(ambiguous)多重继承(
C++ - 多重继承(multiple inheritance)歧义(ambiguous)

多重继承(multiple inheritance)歧义(ambiguous)

 

本文地址: http://blog.csdn.net/caroline_wendy/article/details/23737553

 

多重继承, 如果基类(base class)的成员函数名称相同,重载(overload)函数调用, 会忽略public和private, 选取最佳的匹配函数,

匹配度相同, 则会造成歧义, 产出错误:request for member 'xxx' is ambiguous, (GCC)

如需使用, 可以添加具体的域操作符, 指定类("class::method()").

代码如下:

/*
 * test.cpp
 *
 *  Created on: 2014.04.14
 *      Author: Spike
 */

/*eclipse cdt, gcc 4.8.1*/

#include <iostream>
#include <string>

using namespace std;

class BorrowableItem {
public: //共有
	void checkout() { std::cout << "BorrowableItem" << std::endl; }
};

class ElectronicGadget {
private: //私有
	bool checkout() const { return true; };
};

class MP3Player:
		public BorrowableItem,
		public ElectronicGadget
{};

int main() {
	MP3Player mp;
	mp.BorrowableItem::checkout(); //不添加域操作符会产生歧义
	return 0;
}

 

输出:

BorrowableItem


来源:比特技术在线(www.byte.online),欢迎分享本文,转载请保留出处!
http://www.byte.online/a/kaifayuyan/C__/2018/242992.html
责任编辑:比特技术网

    打赏

    取消

    感谢您的支持,我会继续努力的!

    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    网友评论:

    Copyright © www.byte.online 比特技术在线 版权所有 粤ICP备15038486号-3
    本站所有资料来源于网络,由个人收集整理,仅限于个人学习和研究,如果侵犯您的权益请联系我们删除!
    Top