ठीक है अंदर समारोह संकेत का एक वेक्टर से एक समारोह बुला अपने मुख्य में मेरे पास है:सी ++, एक वर्ग जहां समारोह परिभाषा मुख्य
void somefunction();
int main()
{
//bla bla bla
SomeClass myclass = SomeClass();
void(*pointerfunc)() = somefunction;
myclass.addThingy(pointerfunc);
//then later i do
myclass.actionWithDiffrentOutcomes();
}
void somefunction()
{
//some code
}
और कक्षा में:
class SomeClass()
{
public:
void addThingy(void (*function)());
void actionWithDiffrentOutcomes();
private:
std::vector<void (**)()> vectoroffunctions;
}
SomeClass::addThingy(void (*function)())
{
vectoroffunctions.push_back(&function);
}
SomeClass::actionWithDiffrentOutcomes()
{
(*vectoroffunctions[0])();;
}
मैं पॉइंटर्स के लिए नया-आईएसएच हूं, लेकिन मैंने अपनी सी ++ किताबें, गुगल, एक्सटी पर पढ़ा। और यह सही लगता है, संकलित करता है, चलता है लेकिन जब मैं "actionWithDiffrentOutcomes()" को कॉल करता हूं तो मुझे एक एक्सेस उल्लंघन मिलता है। मुझे यकीन नहीं है कि क्या करना है। यह सही लगता है, लेकिन कुछ स्पष्ट रूप से गलत है। तो जब परिभाषा किसी दूसरे में होती है तो मैं कक्षा के भीतर से एक फ़ंक्शन कैसे कॉल कर सकता हूं?
मैं इसे इस तरह से कर रहा हूं क्योंकि मैं स्विच विकल्प में हर विकल्प को हार्ड-कोड नहीं कर सकता।
आपका नमूना कोड संकलित नहीं करता है; क्या आप सिंटैक्स को दोबारा जांच सकते हैं और अपना प्रश्न संपादित कर सकते हैं? – congusbongus
यह कोड संकलित नहीं करेगा। कृपया एक [लघु, स्वयं युक्त, सही (संकलित), उदाहरण] प्रदान करें (http://sscce.org/)। – Johnsyweb