注册 登录
编程论坛 C++教室

error C2659: '=' : overloaded function as left operand怎么解决啊,新手求助

_莫荣。 发布于 2012-12-12 21:51, 6425 次点击
class Human  
{
public:
    string work;
    Human();
    ~Human();
    virtual string work() = 0;

};

class Student:public Human
{
public:
    Student(string a);
    string work();
};

//--------------------------------------------------
Student::Student(string a)
{
    work = a;
}

大概情况就是这样的情况,为啥不能用‘=’呀。。。
7 回复
#2
yuccn2012-12-12 21:58
你的work 是一个函数啊,
class Student:public Human
 {
 public:
     Student(string a);
     string work; //string work();
 };
 
#3
w5277050902012-12-12 21:59
因为你的work不知道是函数还是变量。。。
#4
_莫荣。2012-12-12 22:05
函数不是应该后面有()么?就像这样work()。
又为什么我在那个work前面加上了 string 之后就能编译过去了呢。。。。
实在弄不懂诶。。。
#5
yuccn2012-12-12 22:11
如果你要什么work是函数就应该work();
不过不可以吧函数赋值给变量啊,

#6
深藏依旧2012-12-12 22:13
在work = a;前加string 就是类string定义一个对象 work 然后初始化;你的意思应该是给函数work传递参数吧
这样 = 就应该需要重载吧
#7
_莫荣。2012-12-12 22:19
大概。。。懂了。。多谢~
那个 我还需要请教一下。。

    virtual string work() = 0;

这一句编译的时候给了error C2040: 'work' : 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > (void)' differs in levels of indirection from 'class std::basic_string<char,struct std::char_traits<char>,cl
这么长一个错误。。我是按照教材上弄的呀。。帮帮我看下呗
#8
_莫荣。2012-12-12 22:32
好吧 多谢了。。我结贴再开一个吧。。这样问不好问。。。
1