Ошибки, баги, вопросы - страница 3094

 

b3082

class D {};

template <typename T>
class B
  {
public:
                    ~B(void) {f1();}
   void              f1();
  };

class C: public B<D> { };

template <typename T>
void B::f1() {}

void OnStart()
  {
   C c;
  }


При компиляции ошибка "function 'B<D>::f1' must have a body".

При этом если сделать класс B не шаблонным, то компилируется без ошибок.

Это баг или фича?

 
mktr8591 #:

При компиляции ошибка "function 'B<D>::f1' must have a body".

Это баг или фича?

Много лет это без изменений - нужно почему то поменять местами (закончить один класс, прежде чем начать другой)

 

Коллеги, 2 ошибки словил:

  1. не могу скачать с Marketa в MT5 купленный продукт, пишет красным шрифтом "Установка не удалась" в журнале вылезает ошибка 403
  2. при запуске оптимизации не запускается Mql Cloud с ошибкой Not enough money хотя на счете чуть больше 10$
 

Есть скрипт

class X {};

void fTest(X &Obj) {return;}

void OnStart()
  {
   X obj;
   fTest(GetPointer(obj));                      //ОК
//fTest(&obj);         //Compile error: '&' - parameter passed as reference, variable expected   
  }

Вопрос: если GetPointer(obj) передается ок, то почему &obj не проходит?

Это для чего-то нужно?

 

Хочу уточнить, на всякий случай. Предположим, есть такой код:

ClassX *x=new ClassX;

//какой-то код

delete x;

//......много кода, прошло много времени

ClassY *y=new ClassY;

Print(x==y);            // может ли быть true?
Возможно ли в принципе, что x будет равен y?
 
mktr8591 #:

Хочу уточнить, на всякий случай. Предположим, есть такой код:

Возможно ли в принципе, что x будет равен y?

Теоретически - да. Раньше распринтовка указателя показывала счетчик (можно было видеть количество всех объектов). Сейчас - рандом.

 
fxsaber #:

Теоретически - да. Раньше распринтовка указателя показывала счетчик (можно было видеть количество всех объектов). Сейчас - рандом.

Возможно, но для рандома что-то мальнькие значения - у меня обычно семизначные цифры.
 
mktr8591 # :

Есть скрипт

Вопрос: если GetPointer (obj) передается ок, то почему &obj не проходит?

Это для чего-то нужно?

Здесь нет необходимости в GetPointer ().

   fTest(obj);                       //ОК

 // Это для чего-то нужно? 
   X *objptr;
   objptr = &obj;  
 
Alain Verleyen #:

Здесь нет необходимости в GetPointer ().

Согласен. Просто интересно, почему такая разница в поведении.
 
mktr8591 #:

Хочу уточнить, на всякий случай. Предположим, есть такой код:

Возможно ли в принципе, что x будет равен y?

Нет, невозможно