不能与GCC一起使用数组

时间:2016-04-28 10:42:30

标签: c++ linux gcc eclipse-cdt

我在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正在运作)

谢谢。

1 个答案:

答案 0 :(得分:2)

由于<array>间接地包含了using namespace std并且您犯了ErrorMessage的错误,因此std中的“array”指的是value命名空间中的该名称。 /> 这是一个类模板,而不是类型 - 因此是错误消息。

array之外,其value::array被称为typedef value::array arrayvalue中的array毫无意义;名称typedef array array;仍然只存在于类范围内。您也可以编写class ErrorMessage { value::array my_array; }; 。)

 editText.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        final int DRAWABLE_LEFT = 0;
        final int DRAWABLE_TOP = 1;
        final int DRAWABLE_RIGHT = 2;
        final int DRAWABLE_BOTTOM = 3;

       if(event.getRawX() <= (editText.getCompoundDrawables()[DRAWABLE_LEFT].getBounds().width()))
        {
              // your action here
             return true;
        }
        return false;
    }
});

此外,请勿重复使用标准名称。它让每个人都感到困惑。