从另一个 class 方法调用时,链表 class 不插入节点
Linked List class not inserting Nodes when called from another class method
我有一个 iObj class 在其构造函数中采用两个参数,然后将此对象传递给另一个 class(store) 的另一个方法 (Add),该方法从 iObj 获取对象并存储它在链表(List)中。
链表有自己的 class。
当我运行主要是这样
Store st;
st.Add(iObj(Britain", 1));
st.Add(iObj(Germany", 0.01));
st.Add(iObj(Bhutan", 10));
st.PrintStore();
屏幕上没有任何显示。
列表实现。
List::List()
{
head = NULL;
}
void List::insert(iObj* new_node)
{
new_node->next = head;
head = new_node;
}
void List::Print()
{
iObj* temp = head;
while (temp != NULL)
{
std::cout << temp->GetValue()) << "\t";
temp = temp->next;
}
}
iObj Class 实施。
class iObj
{
public:
iObj(char const* first_name, double value);
char GetValue()
// ~iObj();
// copy constructor
// copy assignment operator
friend class LinkedList;
private:
char* first_name;
double value;
iObj* next;
};
iObj::iObj(char const* first_name, double value) : first_name(new char[strlen(first_name) + 1]), value(value), next(NULL)
{
strcpy_s(this->first_name, (strlen(first_name) + 1), first_name);
}
char* iObj::GetValue()
{
return first_name;
}
商店实施。这是iObj存入链表(List)
的地方
void store::Add(iObj& UserIObj)
{
List LL;
iObj* s1 = new iObj("China", 3.5);
LL.insert(s1);
}
当然,您每次进入 store::Add
都会创建一个新列表。因此,您只是将元素添加到堆栈上的列表,然后销毁它。
您需要将 List LL 作为存储的成员而不是局部变量。
(除非 List 有静态成员,但我假设没有)。
我有一个 iObj class 在其构造函数中采用两个参数,然后将此对象传递给另一个 class(store) 的另一个方法 (Add),该方法从 iObj 获取对象并存储它在链表(List)中。 链表有自己的 class。
当我运行主要是这样
Store st;
st.Add(iObj(Britain", 1));
st.Add(iObj(Germany", 0.01));
st.Add(iObj(Bhutan", 10));
st.PrintStore();
屏幕上没有任何显示。
列表实现。
List::List()
{
head = NULL;
}
void List::insert(iObj* new_node)
{
new_node->next = head;
head = new_node;
}
void List::Print()
{
iObj* temp = head;
while (temp != NULL)
{
std::cout << temp->GetValue()) << "\t";
temp = temp->next;
}
}
iObj Class 实施。
class iObj
{
public:
iObj(char const* first_name, double value);
char GetValue()
// ~iObj();
// copy constructor
// copy assignment operator
friend class LinkedList;
private:
char* first_name;
double value;
iObj* next;
};
iObj::iObj(char const* first_name, double value) : first_name(new char[strlen(first_name) + 1]), value(value), next(NULL)
{
strcpy_s(this->first_name, (strlen(first_name) + 1), first_name);
}
char* iObj::GetValue()
{
return first_name;
}
商店实施。这是iObj存入链表(List)
的地方void store::Add(iObj& UserIObj)
{
List LL;
iObj* s1 = new iObj("China", 3.5);
LL.insert(s1);
}
当然,您每次进入 store::Add
都会创建一个新列表。因此,您只是将元素添加到堆栈上的列表,然后销毁它。
您需要将 List LL 作为存储的成员而不是局部变量。
(除非 List 有静态成员,但我假设没有)。