这是我的情况。我有一个课程,我已经公开定义了一个向量,如下所示:
class TrackObjects
{
public:
vector<MovingObj> movingObjects;
...
等
它有一个构造函数和一切。我有一个单独的.cpp文件,其中包含一些实现,我试图在该向量上使用该向量和方法。作为一个例子,它是像这样的函数中的条件的一部分:
if (movingObjects.locX >= x1)
...
等。
它告诉我movingObjects未声明,并首先使用此功能。它不是一个功能,据我所知,我没有像一个人那样称它/试图像它一样使用它。
任何人都可以建议我为什么会收到此错误?
编辑: locX是另一个类MovingObj中的公共变量。 TrackObj是为MovingObj创建的对象创建向量的类。对不起,我真的应该指明一下。像这样:
class MovingObj {
公共:
MovingObj(int inId,int inLocX,int inLocY,int inWidth,int inHeight);
int id,locX,locY,width,height;
答案 0 :(得分:1)
根据您告诉我们的内容,访问locX的正确方法将是:
TrackObjects objs;
objs.movingObjects[15].locX = 123.45;
或者,也许:
if(objs.movingObjects[15].locX >= 15)
{
//do something
}
您还可以在TrackObjects中封装您的访问方法(将其放在TrackObjects.cpp实现中):
bool TrackObjects::testLocX(int pos)
{
if(movingObjects[pos].locX>=15)
return true;
return false;
};
答案 1 :(得分:0)
这是一个基本的C ++问题。 movingObjects是对象的一部分。不属于TrackObjects类的代码只能通过指定要访问的对象的movingObjects来访问movingObjects。
if(someobject.movingObjects.size()&gt; 0) ...
另一个问题是,要从另一个cpp文件访问这样的对象,首先必须#include包含类定义的文件。