Ada situasi di mana saya ingin mengumpulkan semua nama node jalur ke kunci di JSON. Pertimbangkan kondisi indeks array "0", "1" juga diperbolehkan, tetapi mudah untuk melupakan tanda kutip, yang akan menyebabkan crash ketika melakukan dereference. Jadi saya ingin menolak ini. Contoh:
#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;
}
Saya menemukan dan mencoba ini. Bagaimana cara menghindari konversi tersirat pada fungsi yang tidak membangun? sebagai berikut:
#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;
}
Tetapi kompiler masih tidak mengerti saya.
Ada saran?
Tolong tunjukkan penyalahgunaan terminologi dan asumsi, terima kasih!
nullptr
juga?
std::vector<const char*>
bukanstd::vector<std::string>>
?