不能在 GCC 中使用数组
Cannot use array with GCC
我正在 Linux 上使用 GCC 4.8.4 进行编译(使用 -std=c++0x -fPIC)。
我想使用一个由我定义的数组,但出现此错误:
class value
{
public:
typedef std::vector<value> array;
typedef std::map<std::string, value> object;
protected:
int type_;
union
{
...
array* array_;
};
typedef value::array array;
}
class ErrorMessage
{
array my_array;
}
编译错误:
/usr/include/c++/4.8/array:81:12: note: template<class _Tp, long unsigned int _Nm> struct std::array
struct array
^
../sources/ErrorMessage.h:290:2: error: ‘array’ does not name a type
array my_array;
有办法解决这个问题吗? (使用 GCC 4.4.7 它可以工作)
谢谢。
因为 <array>
是从某个地方间接包含的,而你犯了 using namespace std
的错误,ErrorMessage
中的 "array" 指的是 std
中的那个名字命名空间。
这是一个 class 模板,而不是类型 - 因此是错误消息。
在value
之外,其array
被称为value::array
。
(value
中的 typedef value::array array
毫无意义;名称 array
仍然只存在于 class 范围内。您还不如写成 typedef array array;
。)
写入
class ErrorMessage
{
value::array my_array;
};
此外,不要重复使用标准名称。让大家一头雾水。
我正在 Linux 上使用 GCC 4.8.4 进行编译(使用 -std=c++0x -fPIC)。
我想使用一个由我定义的数组,但出现此错误:
class value
{
public:
typedef std::vector<value> array;
typedef std::map<std::string, value> object;
protected:
int type_;
union
{
...
array* array_;
};
typedef value::array array;
}
class ErrorMessage
{
array my_array;
}
编译错误:
/usr/include/c++/4.8/array:81:12: note: template<class _Tp, long unsigned int _Nm> struct std::array
struct array
^
../sources/ErrorMessage.h:290:2: error: ‘array’ does not name a type
array my_array;
有办法解决这个问题吗? (使用 GCC 4.4.7 它可以工作)
谢谢。
因为 <array>
是从某个地方间接包含的,而你犯了 using namespace std
的错误,ErrorMessage
中的 "array" 指的是 std
中的那个名字命名空间。
这是一个 class 模板,而不是类型 - 因此是错误消息。
在value
之外,其array
被称为value::array
。
(value
中的 typedef value::array array
毫无意义;名称 array
仍然只存在于 class 范围内。您还不如写成 typedef array array;
。)
写入
class ErrorMessage
{
value::array my_array;
};
此外,不要重复使用标准名称。让大家一头雾水。