मुझे निम्न त्रुटि मिल रही है जब मैं किसी तृतीय-पक्ष SDK से कुछ कोड संकलित करने का प्रयास करता हूं।कोई पॉलिमॉर्फिक क्लास प्रकार की ऑब्जेक्ट को कैसे हटाएं जिसमें कोई आभासी विनाशक नहीं है
*Description Resource Path Location Type
deleting object of polymorphic class type ‘Vendor_sys::VendorCode’ which has non-virtual destructor might cause undefined behaviour [-Werror=delete-non-virtual-dtor] PnServer.cpp /PCounter line 467 C/C++ Problem*
मैं अपनी यदि संभव हो तो जहां भारी उठाने के सबसे एक dll या लायब्रेरी वस्तु में किया जाता है विक्रेता के एसडीके का केवल आंशिक ज्ञान, के साथ इस शर्त को पूरा करने के पता नहीं है।
मेरा निर्माण पर्यावरण ग्रहण जूनो जीपीपी के साथ है।
मैंने त्रुटि संदेश के लिए Google में खोज की और इस त्रुटि के कोई भी उदाहरण नहीं मिला।
तो, अगर मैं विक्रेता कोड के काले बॉक्स हिस्से को संशोधित नहीं कर सकता, तो मेरे विकल्प क्या हैं?
delete pData->unit;
तो कक्षा को विरासत में मिलाया जाना है, लेकिन वर्चुअल विनाशक नहीं है? मैं शिकायत करता हूं कि जिसने पुस्तकालय बनाया है। – chris
चेतावनी थोड़ा हल्का है। किसी व्युत्पन्न प्रकार के ऑब्जेक्ट को किसी मूल प्रकार से एक पॉइंटर के माध्यम से हटाना जिसमें वर्चुअल विनाशक परिणाम अनिर्धारित व्यवहार में नहीं हैं। इसके बारे में कोई "शायद" नहीं। –
@PeteBecker कम से कम g ++ 4.8 इस चेतावनी को जारी करता है, भले ही मैं व्युत्पन्न कक्षा में एक सूचक के माध्यम से हटा देता हूं। यह सुरक्षित होगा (AFAIK), इसलिए "शायद" यहां भी गलत है (चेतावनी बिल्कुल उत्पन्न नहीं की जानी चाहिए)। मुझे लगता है कि जी ++ दो मामलों में अंतर नहीं कर सकता है। – sstn