Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
即使在删除变量后,代码仍保持显示该变量 我还是C++新手,刚开始学习类和OOP。我一直在练习用我能想到的任何东西来上课,所以我上了一堂电话课。代码如下。问题是无论我给它什么数字,它每次都显示相同的错误数字。最疯狂的是,一开始我给phone类一个变量来存储它自己的编号,并给类实例一个自己的编号。这个号码就是它一直想要“呼叫”的号码。即使返回几次并确保没有调用wring变量,我还是完全删除了该变量,代码仍然显示相同的数字。电话号码是214-748-3647。让我觉得我的电脑闹鬼了。有人能帮忙吗_C++_Oop - Fatal编程技术网

即使在删除变量后,代码仍保持显示该变量 我还是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;
}