ক্লজ ব্যবহার করে আমার দুটি বেস ক্লাস রয়েছে
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);
}
সংকলকটি তখন 'নেটওয়ার্কপ্যাকেট'-এর একটি ত্রুটিযুক্ত রেফারেন্সটিকে দ্ব্যর্থহীন' সেন্ড নেটওয়ার্কপ্যাকেট (নেটওয়ার্কপ্যাকেট & ... ') হিসাবে চিহ্নিত করেছে
এখন উভয়ই 'ক্লজ ব্যবহার করছে' একই আন্ডারলাইং ক্লাস নেটওয়ার্কিংয়ের জন্য সমাধান: নেটওয়ার্কপ্যাককেট
এবং প্রকৃতপক্ষে যদি আমি পদ্ধতি ঘোষণার সাথে প্রতিস্থাপন করি:
void sendNetworkPacket(const Networking::NetworkPacket &pdu);
এটা জরিমানা সংকলন।
উভয়ই একই অন্তর্নিহিত প্রকারের দিকে ইঙ্গিত করে যদিও সংকলক প্রতিটি ক্লজকে পৃথক প্রকার হিসাবে ব্যবহার করছে কেন? এটি কি স্ট্যান্ডার্ড দ্বারা বাধ্যতামূলক বা আমাদের একটি সংকলক বাগ রয়েছে?
NetworkPacket
সংকলকটি হ'ল পয়েন্টটি কেবল জানে যে তিনটি বিদ্যমান রয়েছে - মাল্টিমিক্সএমকিউইউ ক্যালব্যাক, প্ল্যাকএমএসজিফ্যাক্ট্রিআইপলক্যালব্যাক, নেটওয়ার্কিং এ। কোনটি ব্যবহার করবেন তা নির্দিষ্ট করা উচিত। এবং আমি মনে করি না যে virtual
এখানে রাখা কোনও উপকারে আসবে।