【问题标题】:Sending array between class in C++在 C++ 中的类之间发送数组
【发布时间】:2015-12-16 17:21:16
【问题描述】:

我有一个问题。我想创建IOBjekt 的新数组,我已经填充了数组,现在我想将数组发送到另一个类(Hra)。你能帮我指点一下吗。我不知道如何foreach这个数组并从对象调用方法。

保存到数组

IObjekt **store = new IObjekt*[3];
for (int i = 0; i < 3; i++)
{
    store[i] = new BMPObjekt(aHraciaPlocha, "ball.bmp");

    cout << store[i] << endl;
}

aHra = new Engine(aHraciaPlocha, *store);

解析数组

Engine::Engine(ISystem * plocha, IObjekt *objekty)
    :aHraciaPlocha(plocha), aObjekty(objekty), aSkore(0)
{

    for (int i = 0; i < 3; i++) {

        IObjekt *objekt = &objekty[i]; // This doesnt work
        cout << objekt->dajX << endl; 

    }

}

谢谢。

【问题讨论】:

  • 外部代码中的 3 与 Engine::Engine 中的 3 处于不同的间接级别。要么在外部代码中删除一个间接级别,要么在Engine::Engine 中添加一个。
  • 你真的需要所有这些指针和 c 风格的数组吗?你不能使用像vector 这样的标准容器并传递reference 来代替吗?

标签: c++ arrays visual-c++ c++14


【解决方案1】:

我猜BMPObjektIObjekt 之间的关系(您没有显示)阻止您轻松地从外部代码中删除一个间接级别。所以你需要为被调用的代码添加一个间接级别,从调用中删除一个*

aHra = new Engine(aHraciaPlocha, store);

...

Engine::Engine(ISystem * plocha, IObjekt **objekty)
    :aHraciaPlocha(plocha), aObjekty(objekty), aSkore(0)
{

    for (int i = 0; i < 3; i++) {

        IObjekt *objekt = objekty[i];
        cout << objekt->dajX << endl; 

    }

}

【讨论】:

  • 它显示错误ErrorC3867 'IObjekt::dajX': non-standard syntax; use '&amp;' to create a pointer to member 怎么了?
  • dajX 是如何声明的?您将其用作数据。该错误可能意味着它是一个成员函数。
猜你喜欢
  • 1970-01-01
  • 2011-05-11
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-29
  • 1970-01-01
  • 2016-08-12
相关资源
最近更新 更多