При запуске следующей программы происходит сбой со странным исключением:
"Исключение, выданное в 0x00B31028 в dfun.exe: 0xC0000005: Место чтения нарушения доступа 0x00000000."
Я собираю в visual studio с помощью visuald и dmd. Не уверен в дополнительной информации, чтобы дать, спросите ...
module dfun;
import std.stdio;
class Event(Args...)
{
private void function(Args)[] _funcArray;
public this()
{
}
public void addHandler(void function(Args) handler)
{
_funcArray.length++;
_funcArray[$ - 1] = handler;
}
public void opCall(Args args)
{
foreach(func; _funcArray)
{
func(args);
}
}
}
void foo(int a, char c)
{
writeln(a, c);
}
int main()
{
Event!(int, char) doIt;
doIt.addHandler(&foo);
doIt(5, 'a');
readln();
return 0;
}
Но если код изменяется на этот, с той же базовой функциональностью:
module dfun;
import std.stdio;
void foo(int a, char c)
{
writeln(a, c);
}
int main()
{
//Event!(int, char) doIt;
//doIt.addHandler(&foo);
void function(int, char)[] func;
func.length++;
func[0] = &foo;
func[0](5, 'a');
readln();
return 0;
}
Работает просто отлично.
Что ломает класс?