Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Подпишись на нашу страницу в Facebook. Следи за последними новостями!
bxa29869
141
bxa29869 2014.09.11 06:44 

Ошибка компиляции при такой передаче массива классов:

#property strict

class CTest1
{
public:
  void Function( const CTest1 &Tmp[] )
  {
    return;
  }
};

class CTest2
{
private:
  CTest1* Tmp[];
  CTest1 Tmp2[];

public:
  void CTest2( const int Amount )
  {
    ArrayResize(Tmp, Amount);
    ArrayResize(Tmp2, Amount);

    for (int i = 0; i < Amount; i++)
      Tmp[i] = new CTest1();

    for (int i = 0; i < Amount; i++)
    {
      Tmp[i].Function(Tmp); // Ошибка: 'Tmp' - parameter conversion not allowed. - Почему?

      Tmp2[i].Function(Tmp2); // Здесь нет ошибки.
    }


    return;
  }

  void ~CTest2( void )
  {
    const int Size = ArraySize(Tmp);

    for (int i = 0; i < Size; i++)
      delete Tmp[i];

// delete Tmp[]; // почему так нельзя сразу, вместо поэлементного удаления?

    return;
  }
};

void OnStart( void )
{
  CTest2 Test(5);

  return;
}

ООП только изучаю. Подскажите, почему возникает данная ошибка?

bxa29869
141
bxa29869 2014.09.11 06:58  

Догадался, так надо было:

void Function( const CTest1* &Tmp[] )
 
kbw74614
228
kbw74614 2014.09.25 13:26  
bxa29869:
// delete Tmp[]; // почему так нельзя сразу, вместо поэлементного удаления?
Нашел: ArrayFree.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий