std :: string是不明确的,只要包括像boost这样的非标准库

时间:2016-05-20 07:44:35

标签: c++ boost std ubuntu-16.04

JSONParser.h

#ifndef UTILITY_CLASSES_JSONPARSER_H_
#define UTILITY_CLASSES_JSONPARSER_H_

#include <iostream>
#include <string>
#include <boost/property_tree/json_parser.hpp>

namespace Parsers {

class JSONParser {
    boost::property_tree::ptree pTree;
public:
    JSONParser();
    virtual ~JSONParser();

    void setJSON(char* JSON);
};

} /* namespace Parsers */

#endif /* UTILITY_CLASSES_JSONPARSER_H_ */

JSONParser.cpp

/*
 * JSONParser.cpp
 *
 *  Created on: 20-May-2016
 *      Author: arjun
 */

#include "JSONParser.h"

namespace Parsers {

JSONParser::JSONParser() {
    // TODO Auto-generated constructor stub

}

JSONParser::~JSONParser() {
    // TODO Auto-generated destructor stub
}
void JSONParser::setJSON(char* JSON){
    std::string temp;

    pTree.put("foo", "bar");
    pTree.put("foor", "bawr");
    std::ostringstream buf;
    write_json (buf, pTree, false);
}
} /* namespace Parsers */

上面定义的是我为JSONParser编写的cpp-header对。但是,当我尝试使用std :: strings:

时会抛出错误
  

std :: string含糊不清。

似乎只要我包含boost/property_tree/json_parser.hpp就会发生这种情况,即每当我删除包含它时,都没有错误。 当我包含GeographicLib之外的内容时也会发生同样的情况。 我在Ubuntu 16.04上,我的库位于usr/local/lib,包含在usr/local/include

错误如下:

  

描述资源路径位置类型   'std :: string'含糊不清'   候选人是:   'JSONParser.cpp / PSO-PathFinding / Utility Classes第14行语义错误

使用cdt在Eclipse上编程。

1 个答案:

答案 0 :(得分:1)

解决。不是C ++问题,也不是提升库问题。似乎是我正在使用的当前eclipse工作区的一个问题。