มีสถานการณ์ที่ฉันต้องการรวบรวมชื่อโหนดทั้งหมดของพา ธ ไปยังคีย์ใน 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>>
?