未在此范围中声明JSONNODE

JSONNODE was not declared in this scope

本文关键字:声明 JSONNODE 范围      更新时间:2023-10-16

我刚刚从sourceforge.net安装了libjson。我尝试执行一个简单的程序,但我得到了这个错误

‘JSONNode’ was not declared in this scope

这是代码

#include<iostream>
#include <libjson.h>
int main()
{
    JSONNode n(JSON_NODE);
    JSONNode c(JSON_ARRAY);
    c.push_back(JSONNode("", 16));
    c.push_back(JSONNode("", 43));
    c.push_back(JSONNode("", 69));
    n.push_back(c);
    std::string jc = n.write_formatted();
    std::cout<<jc<<std::endl;
    return 0;
}

M我丢失了一些头文件?

您需要在JSONOptions.h中禁用#define JSON_LIBRARY,否则libjson将不包括C++头。

我看到libjson内容是在json命名空间中定义的。请尝试在JSONNode前面添加json::以解决问题?像这样:

json::JSONNode n(JSON_NODE);
json::JSONNode c(JSON_ARRAY);

您必须确保首先构建libJson库。

我遵循了以下线程,在遇到与您相同的问题后,它对我来说非常有效:

对于运行生成文件:http://stackoverflow.com/a/11865407/1399434e

禁用JSONOptions.h 中的JSON_LIBRARY

//#define JSON_LIBRARY

然后按照下面的再次编译

#include "libjson.h"
using namespace libjson;
int main(int argc, char* argv[])
{
    JSONNode* pNode = NULL;
    return 0;
}