मैं पुरातन विजुअल स्टूडियो 2008 का उपयोग कर रहा हूं (मुझे आपकी समस्या है "मुझे आपकी समस्या है"।) यह विजुअल स्टूडियो के साथ एक समस्या प्रतीत होता है:
http://rextester.com/XKFR77690
यह एक समस्या है http://ideone.com/bhxMi0गतिशील_कास्ट जोर देने में त्रुटि
इन structs को देखते हुए: assert
मैक्रो के साथ
struct base { virtual ~base() {} };
template <typename T>
struct Foo : base { T foo; };
मैं यह कर सकता:
base* test = new Foo<pair<int, int>>;
if(dynamic_cast<Foo<pair<int, int>>*>(test) != NULL) cout << "hello world\n";
लेकिन जब मैं एक assert
में ठीक उसी कोड का उपयोग के रूप में if
-statement में है: assert((Foo<pair<int, int>>*)(test) != NULL)
लेकिन मुझे लगता है:
warning C4002: too many actual parameters for macro
assert
error C2143: syntax error : missing ',' before ')'
संयोग से मैं एक सी शैली डाली का उपयोग करके इसे ठीक कर सकते हैं: assert(dynamic_cast<Foo<pair<int, int>>*>(test) != NULL)
मैं कोई त्रुटि मिलती है कि सी-स्टाइल कास्ट static_cast
dynamic_cast
नहीं करेगा जो मैं नहीं चाहता हूं।
पुन: "मेरे नीचे जवाब" - तो विभिन्न कारकों के आधार पर उत्तर पुन: व्यवस्थित करता है, इसलिए "नीचे" और "ऊपर" बदल सकता है। अभी, उदाहरण के लिए, मुझे आपके नीचे कोई जवाब नहीं दिख रहा है, लेकिन मुझे इसके ऊपर एक दिखाई देता है। –
@PeteBecker मैंने सही शब्द खोजने के लिए 20 सेकंड बिताए और * नीचे * मेरा आखिरी उपाय था ... – DeiDei
@DeiDei बस उत्तर को लिंक करें। –