Если вы имеете в виду без использования переменных промежуточного класса, вы можете сделать
arr[0] = B::new();
Это относительно новая функция SystemVerilog, и некоторые инструменты еще не поддерживают ее. Чтобы обойти это, вы можете создать статический метод create
, который вызывает для вас конструктор, который позволяет создавать объект класса в таких местах, как аргумент функции, без необходимости объявлять промежуточную переменную.
class B;
static function C create;
create = new;
endfunction
endclass
arr[1] = C::create();
somefunction(C::create()); // C::new() would not work here
Если вы используете библиотеку UVM, вы получаете это бесплатно
class C extends uvm_object;
`uvm_object_utils(C)
...
endclass
arr[3] = C::type_id::create();