正在尝试添加到C++中的LinkedList.获得SegFault
Trying to add to a LinkedList in C++. Getting a SegFault
所以我试图在c++中添加到链表中,但由于某种原因,我一直收到SegFault。
Stock是将"成为"LinkedList的类,StockAccount是将访问它的类。
我插入数据的方式是,它穿过文件行的购买行,解析当前行上的信息,并将其插入列表中。
这是我用来添加到列表中的代码:
void StockAccount::addStock(string sN, double sP) {
Stock *temp, *temp2;
temp->StockName = sN;
temp->StockPrice = sP;
temp->next = NULL;
if (myHead == NULL) {
myHead = temp;
} else {
temp2 = myHead;
while (temp2->next != NULL) {
temp2 = temp2->next;
}
temp2->next = temp;
}
}
SegFault似乎发生在我定义的那一行
temp->StockName=sN;
我是c++的新手,所以我的猜测是我用错了指针/引用。
以下是我如何定义股票类别:
#include <string>
using namespace std;
using std::string;
class Stock {
friend class StockAccount;
public:
Stock() {
}
Stock(string name, double price) : StockName(name), StockPrice(price) {
this->next = NULL;
}
private:
string StockName = "";
double StockPrice = 0;
Stock *next;
};
下面是我如何定义StockAccount类的。Account只是一个简单的基类。
class StockAccount : public Account {
friend class Account;
public:
StockAccount();
void addStock(string sN, double sP);
private:
Stock *myHead;
Stock *myTail;
};
以及它的实现:
StockAccount::StockAccount() {
vector<string> temp;
string line;
std::ifstream stockfile("Results.txt");
if (stockfile.is_open()) {
while (stockfile.good()) {
getline(stockfile, line);
istringstream ss(line);
string token;
while (std::getline(ss, token, ',')) {
temp.push_back(token);
}
//*stck = new stock(token.at(0), atof(temp.at(1)));
addStock(temp.at(0), atof(std::string(temp.at(1)).c_str()));
temp.clear();
}
stockfile.close();
} else {
cout << "Unable to open file" << std::endl << std::endl;
}
}
//http://www.codeproject.com/Articles/24684/How-to-create-Linked-list-using-C-C
void StockAccount::addStock(string sN, double sP) {
Stock *temp, *temp2;
temp->StockName = sN;
temp->StockPrice = sP;
temp->next = NULL;
if (myHead == NULL) {
myHead = temp;
} else {
temp2 = myHead;
while (temp2->next != NULL) {
temp2 = temp2->next;
}
temp2->next = temp;
}
}
temp->StockName = sN;
,您实际上是在尝试取消引用一个无效的指针,这当然会导致分段错误。
您需要做的是在尝试对stock
对象执行任何操作之前,通过执行Stock *temp = new Stock();
来分配它。
相关文章:
- C++:正在检查LinkedList中的回文-递归方法-错误
- 在c++中实现LinkedList时,应出现未处理的错误
- 已修改的LinkedList未在文本文件本身中更新
- 如何在 c++ 中处理 LinkedList 的指针
- 使用简单的代码从分类的LinkedList中删除重复的节点
- C++中嵌套在另一个 LinkedList 中的 LinkedList 整数上的回调函数问题
- LinkedList C 中的反向打印
- 通过linkedlist类中的另一个类调用功能
- 在C 中显示LinkedList时永无止境的循环
- 删除 LinkedList 类中的指针
- C++中的LinkedList字符数组数据
- 正在尝试添加到C++中的LinkedList.获得SegFault
- 无法尝试删除不在 C++ 中 LInkedList 中的项目
- LinkedList构造函数,允许用户输入列表中的元素
- 删除LinkedList中的Bottom和Top节点
- LinkedList C++中的指针问题
- 删除LinkedList中的front元素会产生垃圾
- 删除LinkedList中的节点
- 删除LinkedList中的最后一个元素(c++)
- LinkedList类中的节点类