Показать сообщение отдельно
Старый 27.06.2005, 15:05   #1  
Maximin is offline
Maximin
NavAx
NavAx Club
 
415 / 361 (13) ++++++
Регистрация: 09.10.2002
Адрес: Москва
Баг в X++ - передача container в методы
Столкнулся с проблемой.
В общем, вкратце ситуация такова - при вызове метода с параметров типа container, такие параметры передаются только для чтения.
За примером далеко ходить не надо.

Вот класс c рекурсивным статическим методом. Если заменить параметры на int - посчитает до 10ти. Если с контейнером - зациклится, выдавая 1. Аксапта 3 SP3 CU1.
PHP код:
class Class1 
{
}
static 
container m(container c)
{
    ;
    
conpoke(c,1,conpeek(c,1)+1); // conins(c,1,conpeek(c,1)+1); - эффект тот же
    
box::info(conpeek(c,1));
    if (
conpeek(c,1)>10)
        return 
c;
    else {
        return 
Class1::m(c);
    }

Вызывающий Job:
PHP код:
static void Job1(Args _args)
{
    ;
    
Class1::m([1]);

P.S. Кстати, нашел еще одну забавную багу компилятора с определением прототипа рекурсивной функции при изменении кол-ва её аргументов... но это мелочи.