使用带有错误对象的向量 自从我做C++以来已经有一段时间了,所以我在这里遇到了一些麻烦。我在主文件中声明allQueue的行中遇到此错误。很明显,我已经删除了很多我认为不需要的代码,如果你还需要什么,请告诉我
编译使用带有错误对象的向量 自从我做C++以来已经有一段时间了,所以我在这里遇到了一些麻烦。我在主文件中声明allQueue的行中遇到此错误。很明显,我已经删除了很多我认为不需要的代码,如果你还需要什么,请告诉我,c++,class,object,vector,C++,Class,Object,Vector,编译 g++ mainFile.cpp MyClass.cpp extraObjectFile.o -o mainFile 生成: error: expected constructor, destructor, or type conversion before ‘<’ token MyClass.h class MyClass { int priority; public: MyClass(int); int getPriority(
g++ mainFile.cpp MyClass.cpp extraObjectFile.o -o mainFile
生成:
error: expected constructor, destructor, or type conversion before ‘<’ token
MyClass.h
class MyClass
{
int priority;
public:
MyClass(int);
int getPriority();
};
将
vector
更改为std::vector
std::vector
,而不仅仅是vector
new
返回指向MyClass
的指针,而不是对象本身。您需要创建指针向量(vector
),或者需要像这样使用MyClass()
构造函数
MyClass m(100);
所有队列。推回(m)代码>
allQueue.push_back(mMyClass(100));
好的,首先要注意的是:当您发布错误消息时,请发布编译器给您的完整错误消息。否则,可能没有人能帮助你 第二,回答你的问题: 使用
添加对象。考虑为MyClass实现一个拷贝构造函数.< /p>,因为没有人解释为什么在<代码> vector < /COD>之前添加<代码> STD::/COD>,并且因为它不值得自己的答案,这是因为
代码>在您的包含之后。看右边。我从几年前编写的一个旧cpp文件中复制了一些代码,当时我正在将这个文件与我的旧文件进行比较,我一定忘了复制名称空间行。永远不会找到它…+1这消除了所有的编译器错误。使用vector
或vector
是否被认为是更好的做法?@jb这取决于您要存储的内容。一个存储指针,另一个存储对象本身。在大多数情况下,您只需要存储对象。请记住,在存储指针时,从向量
中删除指针时,仍然必须删除它们,否则会导致内存泄漏。@jb。使用MyClass还是MyClass*作为向量的容器元素完全取决于您想要实现什么。这两种方法各有利弊。然而,很多人会认为使用MyClass更安全,并且只有当你真的必须使用指针时,你应该考虑使用智能指针(如Booost:SToM:SyddY-PTR从Soost或STD::SyrdypTR,如果你已经有C++ 11支持)。
class MyClass
{
int priority;
public:
MyClass(int);
int getPriority();
};
allQueue.push_back(mMyClass(100));
std::vector<MyClass> allQueue;
allQueue.push_back(MyClass(100));