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>'
答案 0 :(得分:5)
正确的语法是
(*ex_vector)[0].doThis();
另外,您应该delete ex_vector;
而不是delete[] ex_vector;
,因为new
的类型不是原始数组类型。
然而,new
std::vector
很少有充分的理由。只需使用普通对象。