【问题标题】:must be a nonstatic member function必须是非静态成员函数
【发布时间】:2017-01-26 06:01:29
【问题描述】:

尝试编译一些代码,但我不断收到一条错误消息 " 'myString& operator=(const myString&)' 必须是非静态成员函数"

这是我的 namelist.cpp

myString& operator=(const myString& string)
  {
          if(this = &string)
                  return *this;

          data = new char[strlen(string.data)+1];

          strcpy(data, string.data);
        length = string.length;

          return *this;
  }

这是我的一些名单.h

  9 class myString
 10 {
 11 private:
 12         char* data;
 13         int length;
 14
 15 public:
 16         myString();
 17         myString(char cString[]);
 18         myString(myString& cString);
 19         //desctructor
 20         myString operator=(const myString& string);
 21         myString operator+(const myString& string);

【问题讨论】:

  • 标头中的声明不匹配。错过'&'
  • 小心那个名为string的变量。一个错字和一个using namespace std 和错误消息可能会从易于阅读变成噩梦般的神秘。

标签: c++ class object operator-overloading


【解决方案1】:

声明应该是:

myString& operator=(const myString& string);

以及定义:

myString& myString::operator=(const myString& string)

【讨论】:

  • 问题是我像你说的那样得到了一个错误,上面写着“error:prototype for 'myString& myString::operator=(const myString&)' does not match any in class 'myString' . 它具体指向 myString::
  • 得到了 nvm。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-25
  • 2012-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多