【发布时间】:2014-02-03 06:35:36
【问题描述】:
我正在努力重新创建各种 c++ 类型,以便更好地了解它们的工作原理。我目前卡在 += 运算符上,找不到我的声明的问题。这是我的课程的代码:
class String {
int size;
char * buffer;
public:
String();
String(const String &);
String(const char *);
int length(){return size;};
friend bool operator==(const String &, const String &);
friend bool operator<=(const String &, const String &);
friend bool operator<(const String &, const String &);
friend ostream & operator<<(ostream &, const String &);
char operator[](const int);
// friend String operator+=(const String &,const char * p);
friend String operator+=(const char * p);
};
我正在让这些按计划工作,但 += 运算符定义为:
String operator+=(const char * p){
int p_size = std::char_traits<char>::length(p);
int new_size = size+p_size;
char * temp_buffer;
temp_buffer = new char(new_size);
for(int i=0; i<size; i++){
temp_buffer[i] = buffer[i];
}
for(int i=size, j=0; j<p_size;i++,j++){
temp_buffer[i] = p[j];
}
delete buffer;
buffer = new char[new_size];
size = new_size;
for(int i=0; i<size; i++){
buffer[i] = temp_buffer[i];
}
return *this;
}
我的错误是 string.h:29: 错误:âString operator+=(const char*)â must have an argument of class or enumerated type string.cpp:28: 错误:âString operator+=(const char*)â must have an argument of class or enumerated type
感谢任何关于我在重载期间做错的信息。
【问题讨论】:
-
+=通常是会员,而不是朋友。 (运算符在您的代码中适用于什么?)