矢量公共类 - 不能在实现中使用?

时间:2013-05-19 00:02:59

标签: c++ class vector

这是我的情况。我有一个课程,我已经公开定义了一个向量,如下所示:

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;

2 个答案:

答案 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.movi​​ngObjects.size()&gt; 0)    ...

另一个问题是,要从另一个cpp文件访问这样的对象,首先必须#include包含类定义的文件。