在Halide的源代码中,我阅读了以下代码行:
operator halide_type_t() const { return type; }
在名为Type
的类的定义中,它包含一个成员type
,它是halide_type_t
结构。
我对operator
重载有些困惑,应该如何使用新功能halide_type_t()
?
答案 0 :(得分:1)
考虑以下代码:
struct number{
int numerator;
int denominator;
operator float() { return numerator*1.0 / denominator }
}
void main(){
number n;
n.numerator = 3;
n.denominator = 4;
float value = n; // here the user-defined conversion occurs
std::cout << value; // 0.75
}
在这种情况下,将进行用户定义的转换。每当一个数字对象是 如果将其分配给浮点值,则会进行转换并返回该值。 在您的情况下,将类型为Type的对象分配给struct halide_type_t时, 即
Type t1;
halide_type_t t = t1;
将t1.type的值分配给t。 希望能帮助到你! :)