Нет члена с именем name в пространстве имен namespace

0

Я не могу за всю жизнь понять, почему эта ошибка возникает, поскольку я уверен, что синтаксис верен (очевидно, я ошибаюсь!). Поэтому я подумал, что увижу, может ли кто-нибудь здесь указать мне.

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, '|');
  • 0
    Убедитесь, что вы #include включаете соответствующие файлы.
  • 1
    Я проверил дважды и трижды.
Показать ещё 3 комментария
Теги:
namespaces

1 ответ

2
Лучший ответ

Вероятно, вы не включаете файлы заголовков правильно.

Следующий код компилируется (как с 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;
}

Надеюсь, это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню