Простая перегрузка оператора в языке D вызывает исключение - PullRequest
0 голосов
/ 19 марта 2012

Этот код:

class C 
{
    int opAdd(C b) { return 1; }
    private int j;
}

void main() 
{
    C a;
    C c;

    int j = a + c;
}

Выдает:

"object.Exception: Access Violate - Read at address 0x0"

1 Ответ

6 голосов
/ 19 марта 2012

Классы в D являются ссылочными типами.Вам необходимо создать их экземпляр:

C a = new C();
C b = new C();

Также, opAdd был заменен на opBinary!"+" в D2 (см. Перегрузка оператора D2 ).

...