使用指针使用矢量对象的功能

时间:2017-04-14 12:13:22

标签: c++ arrays vector

1)。为什么我收到此错误?什么是正确的语法?

2)。有没有办法在不使用库“vector”的情况下编写相同的代码?

#include <vector>

myClass()
{
    public:
        myClass(int x,int y);
        void doThis()
        {
            //Something
        }
}

int main(void)
{
    std::vector<myClass>*ex_vector = new std::vector<myClass(5,myClass{10,10});
    ex_vector[0]->doThis(); //Error Here
    delete []ex_vector;
}

我收到此错误:

error: base operand of '->' has non-pointer type 'std::vector<myClass>'

1 个答案:

答案 0 :(得分:5)

正确的语法是

(*ex_vector)[0].doThis();

另外,您应该delete ex_vector;而不是delete[] ex_vector;,因为new的类型不是原始数组类型。

然而,new std::vector很少有充分的理由。只需使用普通对象。