visual c ++ - "功能已经有一个身体"

时间:2014-11-05 07:37:43

标签: visual-c++

这是我的声明,我甚至使用包含警卫: 编辑:我将包括整个标题,如果这将有助于回答任何额外的 一个人可能有的问题。

#ifndef STRING_H
#define STRING_H

#include<iostream>

class String
{
public:
    String(const char * s = "");
    String(const String & s);
    String operator = (const String & s);
    char & operator [] (int index);
    int size();
    String reverse();
    int indexOf(char c);
    int indexOf(String pattern);
    bool operator == (String s);
    bool operator != (String s);
    bool operator > (String s);
    bool operator < (String s);
    bool operator >= (String s);
    bool operator <= (String s);
    String operator + (String s);
    String operator += (String s);
    void print(std::ostream & out);
    void read(std::istream & in);
    static int strLen(const String &s);
    static String strCpy(const String &s, int length);
    static String strDup(const String &s);
    static bool strCmp(const String &s, const  String &t);

    ~String();
private:
    bool inBounds(int i)
    {
        return i >= 0 && i < len;
    }
    char * buf;
    int len;
};
#endif

这是我的定义:(从第183行开始)

String String::operator = (const String & s)
{
    String t(s);
    return t;
}

我一直收到这个错误:

>c:\users\omive_000\documents\visual studio 2013\projects\string\string\string.h(183): error C2084: function 'String String::operator =(const String &)' already has a body
1>          c:\users\omive_000\documents\visual studio 2013\projects\string\string\string.h(11) : see previous definition of '='

任何人都可以向我解释为什么会出现这种错误吗?

1 个答案:

答案 0 :(得分:4)

定义通常不属于头文件。

  • 您可以在包含警戒
  • 中内联声明和定义您的函数
  • 您可以使用cpp文件

那就是说,你的代码看起来很可疑。它不会做它似乎做的事情。 this或其变量没有分配。但这是一个错误,而不是编译器错误。