gpt4 book ai didi

system-verilog - 参数化类中的参数可以用于外部函数定义吗?

转载 作者:行者123 更新时间:2023-12-04 08:28:31 28 4
gpt4 key购买 nike

假设我有一个参数化类 foo 并且其中有一个简单的 setter。

class foo #(type T = int);
T member;

extern function T get_member();
endclass

如果我尝试在类范围之外定义此函数,我会收到 T 的未知类型错误。

function T foo::get_member();
return member;
endfunction

很公平,您会在 C++ 中遇到同样的错误(SV 似乎从中继承了大部分模板/参数化机制)。所以,在 C++ 中,你通过在函数定义之前提供模板声明来解决这个问题,这样编译器就可以识别模板。像这样:

template <typename T>
function T foo::get_member();
return member;
endfunction

SystemVerilog 中是否存在类似的机制,如果有,它是什么?如果没有,那么很明显我必须在类主体中定义我所有的参数化函数/任务。

最佳答案

设置访问参数类型的作用域,将外部函数定义中的T改为foo::T

function foo::T foo::get_member();
return member;
endfunction

工作示例 here

关于system-verilog - 参数化类中的参数可以用于外部函数定义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24915807/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com