एक ऐसी स्थिति है जहाँ मैं JSON में एक कुंजी के लिए पथ के सभी नोड नाम एकत्र करना चाहता हूं। सरणी इंडेक्स "0" की स्थिति पर विचार करें, "1" को भी अनुमति दी जाती है, लेकिन उद्धरणों को भूलना आसान है, जो कि डीरेंस होने पर क्रैश हो जाता है। इसलिए मैं इसे अस्वीकार करना चाहता हूं। उदाहरण:
#include <vector>
#include <iostream>
int func(const std::vector<const char*>& pin) {
return pin.size();
}
int main() {
// {"aname", "3", "path", "0"} wanted but this still compile
std::cout << func({"aname", "3", "path", 0}) << std::endl;
}
मैंने यह पाया और कोशिश की कि मैं गैर-निर्माण कार्यों पर निहित रूपांतरणों से कैसे बचूँ? निम्नलिखित के रूप में:
#include <vector>
#include <iostream>
int func(const std::vector<const char*>& pin) {
return pin.size();
}
template<typename T>
int func(T pin) = delete;
int main() {
std::cout << func({"aname", "3", "path", 0}) << std::endl;
}
लेकिन कंपाइलर ने फिर भी मुझे नहीं समझा।
कोई उपाय?
कृपया शब्दावली और मान्यताओं के किसी भी दुरुपयोग को इंगित करें, धन्यवाद!
nullptr
भी मना करना चाहते हैं?
std::vector<const char*>
इसके बजाय उपयोग करने का कोई कारण हैstd::vector<std::string>>
?