2014-04-14 3 views
12

मैं इस तरह सरणियों का उपयोग कर (उदाहरण के लिए) मेरे C++/CLI कोड है: जब तक मैं करने के लिए पुस्तकालय "सरणी" जोड़नेअसंगत होने में कामयाब रहे सरणी और एसटीडी का उपयोग करते हुए: एक ही समय में सरणी

array<String^>^ GetColNames() { 
    vector<string> vec = impl->getColNames(); 
    array<String^>^ arr = gcnew array<String^>(vec.size()); 

    for (int i = 0; i < vec.size(); i++) { 
     arr[i] = strConvert(vec[i]); 
    } 
    return arr; 
} 

यह ठीक संकलन है परियोजना:

#include <array> 

तब मैं, कैसे कामयाब CLI सरणी का उपयोग करने के पता नहीं है क्योंकि संकलक का मानना ​​है कि सभी घोषित सरणियों std::array हैं।

त्रुटियाँ उदाहरण:

array<String^>^ arr 
//   ^Error here: "too few arguments for class template "std::array"" 

gcnew array<String^>(vec.size()) 
// ^Error: "Expected a type specifier" 

यह कैसे हल करने के लिए? मैंने उस फ़ाइल से using namespace std को हटाने का प्रयास किया, लेकिन इससे कोई फर्क नहीं पड़ता। क्या मुझे इसे परियोजना पर हर दूसरी सी ++ फ़ाइल से हटा देना चाहिए?

+0

सी ++ - क्ली निश्चित रूप से सी ++ नहीं है। – Deduplicator

+0

'नेमस्पेस std;' का उपयोग करके हटाएं? अधिक जानकारी के लिए यहां देखें: http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-Considered-bad-practice – Carsten

+3

आपको 'नेमस्पेस std का उपयोग करना है;' आपको वह मिलता है जो आप लायक हैं:) – jrok

उत्तर

36

स्पष्ट रूप से आपके पास कहीं भी using namespace std; गुंजाइश है। यदि आप इसे नहीं ढूंढ पाते हैं तो इसे .h फ़ाइल में उपयोग करने के लिए देखें।

आप अस्पष्टता को हल कर सकते हैं, सी ++/सीएलआई एक्सटेंशन कीवर्ड जैसे सरcli नामस्थान में हैं। यह ठीक संकलित करता है:

#include "stdafx.h" 
#include <array> 

using namespace std;   // <=== Uh-oh 
using namespace System; 

int main(cli::array<System::String ^> ^args) 
{ 
    auto arr = gcnew cli::array<String^>(42); 
    return 0; 
} 
+3

सहित, वही त्रुटियां, निश्चित रूप से, यह समस्या थी। इसे केवल C++/CLI फ़ाइल से निकालना पर्याप्त नहीं था। धन्यवाद। आपका दूसरा विकल्प ठीक काम करता है, लेकिन मैंने अपनी परियोजना में हर जगह 'नेमस्पेस std' का उपयोग करने का निर्णय लिया। – SysDragon

संबंधित मुद्दे