【发布时间】:2014-06-18 02:55:15
【问题描述】:
我必须编写这个使用链表表示的 String 类。我的复制构造函数似乎有问题,我不知道如何编写赋值运算符。知道错误在哪里以及如何编写它们吗?所示代码适用于具有以下操作 String s="word" 的复制构造函数。我不确定如何为 String s1=s2 写一个。到目前为止,这是我的代码:
struct Element
{
char data;
Element* next;
};
class String
{
Element* top;
public:
String();
bool empty() const;
char last() const;
char pop();
void push(char);
friend std::ostream& operator<<(std::ostream&, const String&);
friend std::istream& operator>>(std::istream&, String&);
String(const char*);
};
String::String(const char *p)
{
int l = strlen(p);
for(int i=0; i < l+1 ; i++)
{
Element *newElement;
newElement = new Element;
newElement->data = p[i];
newElement->next = NULL;
if(top == NULL)
{
top = newElement;
}
else
{
Element *tmp = top;
while(tmp->next != NULL)
{
tmp = tmp->next;
tmp->next = newElement;
}
}
}
}
int main()
{
String s="Hello";
std::cout<<s;//operator<< works tested it
}
【问题讨论】:
-
包括您看到的错误以及您为解决问题所做的工作将很有用。
-
@brader24 我没有收到错误,但程序崩溃了。
-
@user3144334 -
I don't get an error but the program crashes你没有发布程序——你只是发布了一个课程。没有赋予它生命的东西,一个班级就无法生存。请发布一个重复错误的 main() 函数。 -
newElement->data 是什么类型?您的 while 循环看起来也错误,您将 newElement 分配给列表中的每个 Element 实例。
-
@user3144334 - 请发布
Element课程。此外,您发布的代码中没有复制构造函数。String(const String&)函数在哪里?
标签: c++ linked-list copy-constructor assignment-operator