从嵌套类访问父类变量

时间:2015-02-03 14:43:40

标签: class oop system-verilog

我想从嵌套类中访问变量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

1 个答案:

答案 0 :(得分:4)

不要因为你在类rand_x中定义类random_messages而混淆思维,它会自动意味着嵌套类的一个对象在一个对象内被实例化。包装类。声明嵌套类只会更改定义它的范围。

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

(在嵌套类中)声明父级的句柄并将父级作为构造函数参数:

class rand_x;
  // ...

  protected random_messages m_parent;

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

(在外部类中)声明内部类的实例并将自己作为其父类传递:

class random_messages;
  // ...

  rand rand_x x;

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