C++ 分段故障的可能原因是什么?
这是我的主要功能C++ 分段故障的可能原因是什么?,c++,C++,这是我的主要功能 #include <iostream> #include "FlyingPoints.h" using namespace std; void read(const char* msg, FlyingPoints& f) { int inPoints, outPoints; cout << "Enter " << msg << endl; cout << "Enter number
#include <iostream>
#include "FlyingPoints.h"
using namespace std;
void read(const char* msg, FlyingPoints& f)
{
int inPoints, outPoints;
cout << "Enter " << msg << endl;
cout << "Enter number of incoming flying points: ";
cin >> inPoints;
cout << "Enter number of spent flying points: ";
cin >> outPoints;
f = FlyingPoints(inPoints, outPoints);
}
int main()
{
FlyingPoints left, right, result, ref;
cout << "Flying Points Calculator\n";
cout << "========================\n";
read("Left Operand...", left);
read("Right Operand...", right);
cout << "Result: " << endl;
left.display();
cout << " + ";
right.display();
cout << " = ";
result = left + right;
result.display();
cout << endl;
read("2nd Right Operand...", right);
cout << "Result: " << endl;
result.display();
cout << " += ";
right.display();
cout << " => ";
result += right;
result.display();
cout << endl;
read("Reference...", ref);
if (result == ref){
cout << "Result == Reference" << endl;
} else {
cout << "Result != Reference" << endl;
}
return 0;
}
和.cpp文件
#include <iostream>
#include "FlyingPoints.h"
using namespace std;
void FlyingPoints::updatebalance(){
if(inPoints > outPoints){
inPoints = inPoints - outPoints;
outPoints = 0;
}else{
outPoints = inPoints - outPoints;
inPoints = 0;
}
}
FlyingPoints::FlyingPoints(){
inPoints = 0;
outPoints = 0;
}
FlyingPoints::FlyingPoints(int in, int out){
inPoints = in;
outPoints = out;
}
void FlyingPoints::display(){
cout << inPoints << " points available to fly." << outPoints << " points spent." << endl;
}
FlyingPoints& FlyingPoints::operator+=(const FlyingPoints& f){
inPoints += f.inPoints;
outPoints += f.outPoints;
updatebalance();
return *this;//why do we return this?*this refers to the operator?
}
FlyingPoints operator+(const FlyingPoints& a, const FlyingPoints& b){
//inPoints = a.inPoints + b.inPoints;
//outPoints = a.outPoints + b.outpoints;
return a + b;
}
bool operator==(const FlyingPoints& first, const FlyingPoints& second){
if(first.inPoints == second.inPoints && first.outPoints == second.outPoints){
return true;
} else {
return false;
}
}
这就是我跑步时发生的事情。
飞行点计算器
========================
输入左操作数
输入传入飞行点的数量:500
输入飞行点数:300
输入右操作数
输入进入的飞行点数量:200
输入飞行点数:100
结果:
500点可供飞行,300点已消耗
200分可供飞行,100分已消耗。
分段故障
我似乎不知道这个分割错误是从哪里来的,可以吗
有人帮忙吗?这可能是原因吗谢谢问题的原因是操作符+无条件地调用自身,因此是无限递归的 引用OP
FlyingPoints operator+(const FlyingPoints& a, const FlyingPoints& b){
//inPoints = a.inPoints + b.inPoints;
//outPoints = a.outPoints + b.outpoints;
return a + b;
}
学习如何使用调试器真是一个好时机。但它只会在右边的.display;,后面给我一个seg错误;,我不知道发生了什么事
FlyingPoints operator+(const FlyingPoints& a, const FlyingPoints& b){
//inPoints = a.inPoints + b.inPoints;
//outPoints = a.outPoints + b.outpoints;
return a + b;
}