这是我的声明,我甚至使用包含警卫: 编辑:我将包括整个标题,如果这将有助于回答任何额外的 一个人可能有的问题。
#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 '='
任何人都可以向我解释为什么会出现这种错误吗?
答案 0 :(得分:4)
定义通常不属于头文件。
那就是说,你的代码看起来很可疑。它不会做它似乎做的事情。 this
或其变量没有分配。但这是一个错误,而不是编译器错误。