Я не могу за всю жизнь понять, почему эта ошибка возникает, поскольку я уверен, что синтаксис верен (очевидно, я ошибаюсь!). Поэтому я подумал, что увижу, может ли кто-нибудь здесь указать мне.
main.cpp
#include "Object.h"
int main(){
out = json::readJSON(data_dir + "a2-empty_array_with_empty_object.json", e, debug);
}
Object.h
namespace json{
template<typename T>
std::string readJSON(std::string jsonFile, T& object, bool debug = false, char delimiter = ',') {}
}
Я в основном получаю эту ошибку, когда функция явно находится в пространстве имен. Почему это относится к функции как к члену? Может быть, здесь что-то еще происходит...
Ошибка:
a2main.cpp:66:21: error: no member named 'readJSON' in namespace 'json'
out = json::readJSON(data_dir + "a2-cartoons.json", c, debug, '|');
Вероятно, вы не включаете файлы заголовков правильно.
Следующий код компилируется (как с clang, так и с gcc) и работает отлично
#include <string>
namespace json
{
template<typename T>
std::string readJSON(std::string jsonFile, T& object, bool debug = false, char delimiter = ',')
{
return "Hello"; //This function should return a string
}
}
int main()
{
std::string data_dir = "test-";
int e = 3;
bool debug = false;
std::string out = json::readJSON(data_dir + "a2-empty_array_with_empty_object.json", e, debug);
return 0;
}
Надеюсь, это поможет.
#include
включаете соответствующие файлы.