C++ 类方法返回引用C++/SystemC

C++ 类方法返回引用C++/SystemC,c++,systemc,C++,Systemc,要将用户定义的数据类型传递到SystemC通道模板中,需要将这些数据类型定义为同时实现不同类型运算符的类运算符=应返回对类本身的引用,以便您可以执行以下任一操作 a = b = c; if (a = b) { } // check the resulting value of a (a = b).foo(); 尽管这些可能不是您希望做的事情,但它遵循了让用户定义的对象以与内置对象相同的方式工作的一般准则 至于返回引用,您必须确保不返回对本地对象的引用,但它具有预期的语义。请查看以下内容: My

要将用户定义的数据类型传递到SystemC通道模板中,需要将这些数据类型定义为同时实现不同类型运算符的类
运算符=
应返回对类本身的引用,以便您可以执行以下任一操作

a = b = c;
if (a = b) { } // check the resulting value of a
(a = b).foo();
尽管这些可能不是您希望做的事情,但它遵循了让用户定义的对象以与内置对象相同的方式工作的一般准则

至于返回引用,您必须确保不返回对本地对象的引用,但它具有预期的语义。

请查看以下内容:

Myclass a, b, c;

a=b=c=otherMyclass;
要使其工作,每个
操作符=
必须返回链中下一个要使用的引用

此外,您还应检查作业是否与自身无关

    inline route_t& operator = (const route_t& _route) {
   if (&_route != this)
   {
        route_dir = _route.route_dir; 
        vc_index  = _route.vc_index; 
        return *this; 
    }
}
这将处理:

   a=a;

为什么不直接询问赋值运算符的语义,而不是发布主要无关的内容?这会使问题更清楚,并不是每个人都在C++方面很精通,谢谢你们的好评论。与你无关并不意味着它与每个人都无关。我会删除这篇帖子,并参考我在发帖前试图找到的答案。你的大部分帖子都与你所问的问题无关,这会让帖子变得混乱。好吧,就照你说的做吧。如果你没有得到太多帮助,不要惊讶。
    inline route_t& operator = (const route_t& _route) {
   if (&_route != this)
   {
        route_dir = _route.route_dir; 
        vc_index  = _route.vc_index; 
        return *this; 
    }
}
   a=a;