当前位置:天才代写 > tutorial > C语言/C++ 教程 > C++:多重担任(multiple inheritance)歧义(ambiguous)

C++:多重担任(multiple inheritance)歧义(ambiguous)

2017-11-02 08:00 星期四 所属: C语言/C++ 教程 浏览:522

多重担任, 假如基类(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

作者:csdn博客 Spike_King

 

    关键字:

天才代写-代写联系方式