2012-04-02 12 views
6

क्या होगा यदि मैं किसी फ़ंक्शन पर पॉइंटर्स की सरणी रखना चाहता हूं और सरणी का आकार शुरुआत से ज्ञात नहीं है? अगर ऐसा करने का कोई तरीका है तो मैं उत्सुक हूं। नए कथन का प्रयोग या शायद कुछ और। कुछ के लिए देखगतिशील रूप से कार्यों की सरणी कैसे बनाएं?

void (* testArray[5])(void *) = new void()(void *); 

उत्तर

8

के लिए इसी तरह आप इस्तेमाल कर सकते हैं एक std::vector:

#include <vector> 

typedef void (*FunPointer)(void *); 
std::vector<FunPointer> pointers; 

तुम सच में एक स्थिर सरणी का उपयोग करना चाहते हैं, तो यह बेहतर होगा यह FunPointer मैं ऊपर स्निपेट में परिभाषित का उपयोग कर ऐसा करने के लिए :

FunPointer testArray[5]; 
testArray[0] = some_fun_pointer; 

हालांकि मैं अभी भी वेक्टर समाधान के लिए जाना होगा, खाते है कि आप संकलन समय और था दौरान सरणी के आकार पता नहीं है को ध्यान में रखकर कुछ और अधिक मुश्किल है

typedef void(*F)(void*); 

int main() { 
    F *testArray = new F[5]; 
    if(testArray[0]) testArray[0](0); 
} 
typedef बिना

, यह: टी आप सी का उपयोग कर रहे ++ और नहीं सी

1
for(i=0;i<length;i++) 
A[i]=new node 

या

#include <vector> 

std::vector<someObj*> x; 
x.resize(someSize); 
5
typedef साथ

, नई अभिव्यक्ति तुच्छ है

void x(void*) {} 
int main() { 
    void (*(*testArray))(void*) = new (void(*[5])(void*)); 
    testArray[3] = x; 

    if(testArray[3]) testArray[3](0); 
} 
संबंधित मुद्दे