मान लीजिए कि मेरे पास RAII-style C++ क्लास है:क्या आरएआईआई-स्टाइल क्लास को "गुमनाम" तत्काल होने से रोकना संभव है?
class StateSaver
{
public:
StateSaver(int i) { saveState(); }
~StateSaver() { restoreState(); }
};
... मेरे कोड में ऐसा करने के लिए उपयोग किया जाना चाहिए:
void Manipulate()
{
StateSaver save(1);
// ...do stuff that modifies state
}
... लक्ष्य कुछ राज्य दर्ज करना है, सामान करें , तब उस स्थिति को छोड़ दें जब मैं उस दायरे को छोड़ दूं। क्या इस टाइपो को संकलित नहीं करने का कोई तरीका है (या चेतावनी, या किसी भी तरह शिकायत करें ताकि गलती देखी जा सके)?
void Manipulate()
{
StateSaver(1); // ruh-roh, state saved and immediately restored!
// ...do stuff that modifies state
}
मुझे सी ++ में कुछ भी पता नहीं है जिसे मैं इसे रोकने के लिए उपयोग कर सकता हूं, लेकिन इसका मतलब यह नहीं है कि यह अस्तित्व में नहीं है। यदि सी ++ में कुछ भी नहीं है, तो कंपाइलर-विशिष्ट एक्सटेंशन स्वीकार्य होंगे। मैं मुख्य रूप से जीसीसी और एमएसवीसी को लक्षित करने में कुछ भी दिलचस्पी लेता हूं (किसी दिन आईसीसी, अन्य कंपाइलर्स के लिए विचारों का स्वागत है लेकिन उपयोगी होने की संभावना कम है) इसलिए उनमें से किसी के लिए हैक्स उपयोगी होंगे (निश्चित रूप से # ifdef'd मैक्रो परिभाषाओं में उचित रूप से) ।
SaveMatrix(): - मेरे लिए एक समारोह कॉल की तरह> लग रहा है। –
SaveMatrix बचाने(): -> मेरे लिए एक समारोह घोषणा की तरह लग रहा। –