क्लॉस का उपयोग करने के साथ मेरे पास दो आधार कक्षाएं हैं
class MultiCmdQueueCallback {
using NetworkPacket = Networking::NetworkPacket;
....
}
class PlcMsgFactoryImplCallback {
using NetworkPacket = Networking::NetworkPacket;
....
}
मैं तब एक वर्ग घोषित करता हूं
class PlcNetwork :
public RouterCallback,
public PlcMsgFactoryImplCallback,
public MultiCmdQueueCallback {
private:
void sendNetworkPacket(const NetworkPacket &pdu);
}
संकलक फिर 'NetworkPacket' के संदर्भ में त्रुटि का संकेत देता है जो अस्पष्ट है 'sendNetworkPacket (NetworkPacket and ...')
अब दोनों एक ही अंतर्निहित क्लास नेटवर्किंग के लिए 'क्लॉस का उपयोग' का संकल्प लेते हैं: NetworkPacket
और वास्तव में अगर मैं विधि घोषणा को प्रतिस्थापित करता हूं:
void sendNetworkPacket(const Networking::NetworkPacket &pdu);
यह ठीक संकलन करता है।
कंपाइलर प्रत्येक क्लॉज का उपयोग करते हुए क्लॉज को एक अलग प्रकार का मानता है, भले ही वे दोनों एक ही अंतर्निहित प्रकार की ओर इशारा करते हों। क्या यह मानक द्वारा अनिवार्य है या हमारे पास कंपाइलर बग है?
NetworkPacket
NetworkC में PlcMsgFactoryImplCallback में, MultiCmdQueueCallback में तीन मौजूद हैं । जो उपयोग करने के लिए निर्दिष्ट किया जाना चाहिए। और मैं नहीं सोचताvirtual
से कोई मदद मिलने वाली है।