即使在删除变量后,代码仍保持显示该变量 我还是C++新手,刚开始学习类和OOP。我一直在练习用我能想到的任何东西来上课,所以我上了一堂电话课。代码如下。问题是无论我给它什么数字,它每次都显示相同的错误数字。最疯狂的是,一开始我给phone类一个变量来存储它自己的编号,并给类实例一个自己的编号。这个号码就是它一直想要“呼叫”的号码。即使返回几次并确保没有调用wring变量,我还是完全删除了该变量,代码仍然显示相同的数字。电话号码是214-748-3647。让我觉得我的电脑闹鬼了。有人能帮忙吗
代码实际上不会打任何电话或连接什么的 电话类标题即使在删除变量后,代码仍保持显示该变量 我还是C++新手,刚开始学习类和OOP。我一直在练习用我能想到的任何东西来上课,所以我上了一堂电话课。代码如下。问题是无论我给它什么数字,它每次都显示相同的错误数字。最疯狂的是,一开始我给phone类一个变量来存储它自己的编号,并给类实例一个自己的编号。这个号码就是它一直想要“呼叫”的号码。即使返回几次并确保没有调用wring变量,我还是完全删除了该变量,代码仍然显示相同的数字。电话号码是214-748-3647。让我觉得我的电脑闹鬼了。有人能帮忙吗,c++,oop,C++,Oop,代码实际上不会打任何电话或连接什么的 电话类标题 #如果包括电话# #定义包含的电话号码 #包括 使用名称空间std; 班级电话{ 公众: 串品牌; int系列; 线状细胞; 无效调用(); 私人: 无效拨号(整数拨号); void EndCall(); }; #endif//包括电话 电话源代码 #包括 #包括 #包括 #包括“phone.h” 使用名称空间std; void Phone::Call(){ 字符串UserInput=“0”; int NumberToCall=0; cout这
#如果包括电话#
#定义包含的电话号码
#包括
使用名称空间std;
班级电话{
公众:
串品牌;
int系列;
线状细胞;
无效调用();
私人:
无效拨号(整数拨号);
void EndCall();
};
#endif//包括电话
电话源代码
#包括
#包括
#包括
#包括“phone.h”
使用名称空间std;
void Phone::Call(){
字符串UserInput=“0”;
int NumberToCall=0;
cout这是一个非常简单的答案。您的代码和逻辑都很好。发生错误的原因是您将保存电话号码的std::string
转换为整数。这是一个问题,因为典型的10位电话号码太大,无法放入int
类型中。请查看此处,以查看可以容纳的最小和最大号码不同类型:
实际上,看看这条线
long int类型的对象的最大值:2147483647(231-1)或更大
有趣的是,最大值就是那个神秘的电话号码。这是一个非常简单的答案。您的代码和逻辑都很好。发生错误的原因是您将保存电话号码的std::string
转换为整数。这是一个问题,因为典型的10位电话号码太大,无法放入int
类型中。哈We’看看这里,看看您可以在不同类型中容纳的最小值和最大值:
实际上,看看这条线
long int类型的对象的最大值:2147483647(231-1)或更大
有趣的是,最大值竟然是那个神秘的电话号码。听起来您仍然拥有以前版本的旧版本。请确保在更改源代码时,在运行它之前确实重建了它。听起来您仍然拥有以前版本的旧版本。确保在更改源代码时,它实际上是重新编译的哇!太巧了!他以前的电话号码可能与long int的最大值完全匹配……事实上,如果他使用VS,那么int的值会自动分配给2147483647,如果在初始化时没有分配。我猜stringstream失败是因为溢出,而不是c挂起int的值。哇!太巧了!他以前可能编的电话号码与long int的最大值完全匹配……实际上,如果他使用VS,那么int的值会自动分配给2147483647,如果在初始化时没有分配。我猜stringstream会因为溢出而失败并且根本不改变int的值。
#ifndef PHONE_H_INCLUDED
#define PHONE_H_INCLUDED
#include <string>
using namespace std;
class Phone{
public:
string Brand;
int Serial;
string CellId;
void Call();
private:
void Dial(int NumberToDial);
void EndCall();
};
#endif // PHONE_H_INCLUDED
#include <iostream>
#include <string>
#include <sstream>
#include "phone.h"
using namespace std;
void Phone::Call(){
string UserInput = "0";
int NumberToCall = 0;
cout << "What number would you like to call?" << endl << endl;
getline(cin, UserInput);
if(UserInput.length() != 10){
cout << endl << "invalid digits" << endl;
Call();
}
else{
stringstream(UserInput) >> NumberToCall;
Dial(NumberToCall);
}
}
void Phone::Dial(int NumberToDial = 0){
ostringstream converter;
string Number;
converter << NumberToDial;
Number = converter.str();
cout << "Dialing ";
for(int i=0;i<10;i++){
cout << Number[i];
if(i==2){
cout << "-";
}
if(i==5){
cout << "-";
}
}
cout << endl << endl << "Press any key to end the call..." << endl << endl;
cin.get();
EndCall();
}
void Phone::EndCall(){
cout << "Call ended." << endl << endl;
}
#include <iostream>
#include <cstdlib>
#include "phone.h"
using namespace std;
int main()
{
Phone MyPhone;
MyPhone.Brand = "iPhone 5";
MyPhone.CellId = "F2D9G3A2";
MyPhone.Serial = 1411512;
MyPhone.Call();
return 0;
}