Value of member class are not updated

In reply to saritr:

Hi saritr,

Consider following sample example to understand issue.
In your code “my_randomize” operates on queue list ‘rand_int_list’ but not directly on passed ref arguments [mem_int, mem_int_a].

If you want randomized values to get reflected inside your foo() method.
Option1 : Perform randomization on class objects instead using queue of int/bit type.
Option2 : Do randomization directly on [mem_int, mem_int_a] variables instead
storing them first in queue and then randomizing queue elements.

typedef class test_ext;
class tets_c;
  int a=6;  
  int int_q[$];
  test_ext test_q[$];  
    
  function add_int(ref int val);
    int_q.push_back(val);
  endfunction  
  function randomize_int();
     int_q[0]=$urandom_range(11,15);
  endfunction
  
  function add_obj(ref test_ext obj);
    test_q.push_back(obj);
  endfunction  
  function randomize_class();
    test_q[0].a=$urandom_range(21,25);
  endfunction 
endclass

class test_ext extends tets_c;
  function new() ;
    this.a=8;
  endfunction
  
  function foo();
    $display("int_q a %0d Actual a %0d",int_q[0], a);
    $display("test_q a %0d Actual a %0d",test_q[0].a,a);    
  endfunction  
endclass

  module m;
    test_ext t;    
    initial begin
      t=new();
      t.add_int(t.a);
      t.add_obj(t);
      t.foo();
      t.randomize_int();
      t.foo(); 
      t.randomize_class();
      t.foo();      
    end
  endmodule