सी ++ में आप कर सकते हैं। पहले से एक नोट: new
सरणी नहीं है, इसके लिए कोई आवश्यकता नहीं है।
पहला, string[] strArray
एक वाक्यविन्यास त्रुटि है, जो या तो string* strArray
या string strArray[]
होना चाहिए। और मुझे लगता है कि यह सिर्फ उदाहरण के लिए है कि आप किसी भी आकार पैरामीटर को पास नहीं करते हैं।
#include <string>
void foo(std::string* strArray, unsigned size){
// do stuff...
}
template<class T>
using alias = T;
int main(){
foo(alias<std::string[]>{"hi", "there"}, 2);
}
ध्यान दें कि यह बेहतर होगा यदि आप एक अतिरिक्त पैरामीटर के रूप में सरणी आकार उत्तीर्ण करने की आवश्यकता नहीं किया था, और शुक्र है वहाँ एक तरीका है: टेम्पलेट्स!
template<unsigned N>
void foo(int const (&arr)[N]){
// ...
}
ध्यान दें कि यह केवल int x[5] = ...
जैसे स्टैक सरणी से मेल खाएगा। या अस्थायी वाले, ऊपर alias
के उपयोग से बनाए गए।
int main(){
foo(alias<int[]>{1, 2, 3});
}
गतिशील रूप से आवंटित सी-स्टाइल सरणी का उपयोग क्यों करेंगे? मैं सुझाव दूंगा कि आप इसके बजाय 'std :: vector' का उपयोग करें। सी ++ 11 का उपयोग करते समय आप प्रारंभिक सूचियों का उपयोग करके उन्हें बना सकते हैं, उदा। 'शून्य फू (वेक्टर); foo ({"hi", "there"}); 'सी ++ 11 –
Grizzly