2017-01-10 3 views
0

Ich habe eine Klasse mit einem Element in der Klasse, die eine andere Klasse ist. Muss ich den Konstruktor des Elements innerhalb des Konstruktors für die Klasse selbst aufrufen? Zum Beispiel:Müssen Sie den Konstruktor für Klassenobjekte in Systemverilog aufrufen?

class my_class; 
    element_class A; 

    function new(); 
    A = new(123); 
    endfunction 
endclass 


class element_class; 
    int B; 

    function new(int init_value); 
    B = init_value; 
    endfunction 
endclass 

Ist der Konstruktoraufruf in „my_class“ benötigt oder können Sie nur Folgendes tun:

class my_class; 
    element_class A; 

    function new(); 
    A.B = 123; 
    endfunction 
endclass 


class element_class; 
    int B; 

    function new(int init_value); 
    B = init_value; 
    endfunction 
endclass 

Antwort

1

Alle Klassen in SystemVerilog müssen ihre Erbauer nennen, bevor Sie jedes Mitglied verweisen können von dieses Klassenobjekt.

+0

Also das zweite Code-Snippet sollte nicht ausgeführt werden, richtig? – InternetDPS

+1

Es wird kompiliert und gestartet, bis es versucht, auf "A.B" zuzugreifen. Dann erhalten Sie einen Laufzeit-Referenzfehler, weil die Klassenvariable 'A' ** null ** ist. –

Verwandte Themen