从嵌套 class 访问父 class 变量

Access parent class variables from nested class

我想从嵌套的 class 访问变量 width/height/size,将 static 放在它们前面是可行的,但是还有其他方法吗?

class random_messages; 

    int                 max_x;
    int                 max_y;
    rand int            width; 
    rand int            height;
    rand int            size; 

    class rand_x;
        randc int  loc_x;        
        constraint sizes {
            loc_x  < width / 2**(size+3); //accessing here
            loc_x  > 0;
        }        
    endclass

endlcass

不要误以为在classrandom_messages里面定义了classrand_x就自动意味着嵌套对象class 在包装器 class 的对象内实例化。声明嵌套 class 只会更改定义它的范围。

在你的情况下,如果你想访问父对象的变量,你必须执行以下操作:

(in the nested class) 声明父句柄并将父作为构造函数参数:

class rand_x;
  // ...

  protected random_messages m_parent;

  function new(random_messages parent);
    m_parent = parent;
  endfunction
endclass

(in the outer class) 声明一个 inner class 的实例并将自己作为其父级传递:

class random_messages;
  // ...

  rand rand_x x;

  function new();
    x = new(this);
  endfunction
endclass