程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++:多重繼承(multiple inheritance)歧義(ambiguous)

C++:多重繼承(multiple inheritance)歧義(ambiguous)

編輯:關於C++

多重繼承, 如果基類(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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved