好的,我有一个班级Set
,他将vector<int>
作为其数据有效负载。它有一个构造函数接受string
作为参数,例如Set test = Set("1 2 3 4 5 6");
我有一个读取该行的函数,并从那里将它解析为vector<int>
我可以对Set
执行操作{1}}。调用Set test = Set("");
时会出现问题,我的构造函数无法生成Set
,因为它无需解析。我的程序不能去任何地方。我已经尝试在构造函数中添加if else语句但是如何声明空set
?
现在我遇到了分段错误。
#include "Set.h"
using namespace std;
/***************************************************************************************
* Constructors and Destructors
**/
Set::Set(){
}
Set::Set(string inputString) {
if(inputString != ""){
readLine(inputString);
}
else{
//I've tried several things here, none of which work.
}
}
Set::~Set(){
}
/***************************************************************************************
* readLine function
*
* This function takes in a string, takes the next int, and stores in in a vector.
*
* Parameters: string, the string to be parsed.
*
**/
void Set::readLine(string inString){
ScanLine scanLine;
scanLine.openString(inString);
while(scanLine.hasMoreData()){
addToSet(scanLine.nextInt());
}
}
/***************************************************************************************
* addToSet function
*
* This function takes in a int that is an element and adds it to "this" Set.
*
* Parameters: int, the element to be added.
* Return: int, the value that was added.
*
**/
int Set::addToSet(int element){
int returnValue = -1;
if(!containsElement(element)){
this->theSet.push_back(element);
returnValue = element;
}
return returnValue;
}
答案 0 :(得分:0)
我找到了解决方案。在我的equals函数中,当我应该if(!set1.size() == set2.size())
时,由于某种原因导致分段错误,我有if(set1.size() != set2.size())
。