我使用的JsonCPP 0.6.0并不支持BOOST_FOREACH
。 Robert A.已经patch使用BOOST_FOREACH
。这是差异。
Index: value.h
===================================================================
--- value.h (revision 54283)
+++ value.h (working copy)
@@ -919,6 +919,7 @@
class ValueIteratorBase
{
public:
+ typedef std::bidirectional_iterator_tag iterator_category;
typedef unsigned int size_t;
typedef int difference_type;
typedef ValueIteratorBase SelfType;
@@ -990,6 +991,7 @@
{
friend class Value;
public:
+ typedef const Value value_type;
typedef unsigned int size_t;
typedef int difference_type;
typedef const Value &reference;
@@ -1048,6 +1050,7 @@
{
friend class Value;
public:
+ typedef Value value_type;
typedef unsigned int size_t;
typedef int difference_type;
typedef Value &reference;
所以我需要在json/include/value.h
中添加3行,但我不想编辑原始的头文件,但想在我自己的源代码中添加3行。像这样的东西:
typedef std::bidirectional_iterator_tag Json::ValueIteratorBase::iterator_category;
当然我收到了错误error: typedef name may not be a nested-name-specifier
。
我可以这样做吗?
PS。 JsonCPP 0.7.0支持BOOST_FOREACH
。但就我而言,我现在无法升级JsonCPP。
答案 0 :(得分:1)
命名空间已打开,但类定义已关闭。一旦遇到类定义末尾的闭括号,该类就完成了,您无法向该类添加额外的定义(例如额外的typedef)。相比之下,您可以在第一次关闭命名空间后向命名空间添加额外信息。
如果您无法升级到JsonCPP 0.7.0,则必须修补0.6.0标头或等待使用Boost功能,直到您可以升级到支持它的版本。