-1

这是我的情况。我有一个类,我在其中公开定义了一个向量,如下所示:

class TrackObjects
{
public:

    vector<MovingObj> movingObjects;

...

等等

它有一个构造函数和一切。我有一个单独的 .cpp 文件,其中包含一些我试图在该向量上使用该向量和方法的实现。例如,它是函数中条件的一部分,如下所示:

if (movingObjects.locX >= x1)

...

等等

它告诉我movingObjects 是未声明的,并且要先使用这个函数。它不是一个函数,据我所知,我没有像一个函数一样调用它/尝试像一个函数一样使用它。

谁能建议我为什么会收到此错误?

编辑: locX 是另一个类 MovingObj 中的公共变量。TrackObj 是为 MovingObj 创建的对象创建向量的类。对不起,我真的应该指定。像这样:

类移动对象 {

上市:

MovingObj(int inId, int inLocX, int inLocY, int inWidth, int inHeight);

int id,locX,locY,宽度,高度;

4

2 回答 2

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;
};
于 2013-05-19T00:18:29.193 回答
0

这是一个基本的 C++ 问题。移动对象是对象的一部分。不属于 TrackObjects 类的代码只能通过指定您希望访问的对象的移动对象来访问移动对象。

如果 (someobject.movi​​ngObjects.size() > 0) ...

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

于 2013-05-19T00:23:37.407 回答