【发布时间】:2013-07-06 21:23:38
【问题描述】:
我在公共类访问说明符中有一个函数原型。 这是原型:
friend void operator=(String &s,char *str);
String 是其原型所在的类。如您所见,它是一个朋友功能。通过保持这种方式,它会给我这个错误:
operator =' must be a non-static member // Error: operator= must be a member function
当我删除朋友属性时,它给了我这个错误:
error C2804: binary 'operator =' has too many parameters
这个原型有什么问题? operator= 函数目前没有调用,所以即使没有函数定义也不应该有任何错误。
【问题讨论】:
-
String& operator=(char *str); -
虽然这解决了错误,但你为什么会有 operator=() return void??
-
@dans3itz:我的大脑被切换到“懒惰模式”:) 你说得对,我编辑了评论
-
更好的是,如果你有一个
const char *的隐式转换构造函数(使用char *对调用者来说确实是出乎意料的),String &operator=(String s)并复制交换它。
标签: c++ class operator-overloading friend non-static