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