System verilog 常量对象句柄作为函数中的参数

System verilog 常量对象句柄作为函数中的参数,system-verilog,modelsim,System Verilog,Modelsim,我试图编写一个函数,它接受一个常量对象句柄的参数 function void example(const MyClass ob); //-- endfunction 当我尝试运行此代码时,我得到一个错误: syntax error, unexpected type name. The type 'MyClass' is defined at test.sv(1). 可以创建常量对象句柄,但为什么不能在函数参数列表中创建呢? 顺便说一句-我知道这只是一个常量对象句柄,而不是常量类对象

我试图编写一个函数,它接受一个常量对象句柄的参数

function void example(const MyClass ob);
    //--
endfunction 
当我尝试运行此代码时,我得到一个错误:

syntax error, unexpected type name. The type 'MyClass' is defined at test.sv(1).
可以创建常量对象句柄,但为什么不能在函数参数列表中创建呢?
顺便说一句-我知道这只是一个常量对象句柄,而不是常量类对象,而且(不幸的是)在SystemVerilog中创建常量类对象是不可能的。

没有常量对象句柄这样的东西。有常量类变量。与任何常量变量一样,它们会被赋值一次作为其声明的一部分,然后变成只读

变量的值是类对象的句柄。您希望能够使用作为函数输入传入的句柄复制函数参数。如果SystemVerilog允许您将参数声明为常量变量,则无法对其进行赋值


const ref
函数参数的概念,但它的价值很小,因为这只会阻止修改局部参数变量。您仍然可以向任何给定对象句柄的类成员进行写入

没有常量对象句柄这样的东西。有常量类变量。与任何常量变量一样,它们会被赋值一次作为其声明的一部分,然后变成只读

变量的值是类对象的句柄。您希望能够使用作为函数输入传入的句柄复制函数参数。如果SystemVerilog允许您将参数声明为常量变量,则无法对其进行赋值

const ref
函数参数的概念,但它的价值很小,因为这只会阻止修改局部参数变量。您仍然可以向任何给定对象句柄的类成员进行写入