廖旭东 2017-05-06 03:58 采纳率: 100%
浏览 794
已采纳

为什么出现了这样的错误呢?该怎么解决呢?

代码:
class Calculator {
double operand1, operand2;
char operation;
public:
Calculator(double, double, char
);
double doOperation();
};

#include "Calculator.h"
#include
Calculator::Calculator(double op1, double op2,char* opcode) {
this->operand1 = op1;
this->operand2 = op2;
strcpy_s(operation,10,opcode);
}
double Calculator::doOperation() {
if (strcmp(operation,"div") == 0)
return operand1 / operand2;
else if (strcmp(operation, "plus") == 0)
return operand1 + operand2;
else if (strcmp(operation, "minus") == 0)
return operand1 - operand2;
else if (strcmp(operation, "multi") == 0)
return operand1*operand2;
};
#include
#include "Calculator.h"
#include
using namespace std;
int main(int argc, char *argv[]) {
if (argc != 4) {
cerr << "Please input valid arguments";
return -1;
}
double op1 = atof (argv[2]);
double op2 = atof (argv[3]);
char *opcode = argv[1];
Calculator one(op1, op2, opcode);
double m = one.doOperation();
cout << m<< endl;
return 0;

}



![调试中断的错误](https://img-ask.csdn.net/upload/201705/06/1494043273_141491.png)
![debugger stop](https://img-ask.csdn.net/upload/201705/06/1494043221_345985.png)
  • 写回答

2条回答 默认 最新

  • 战在春秋 2017-05-06 07:56
    关注

    首先,代码存在一些错误,修改后的代码如下

    Calculator.cpp:

    #include "Calculator.h"
    #include "stdio.h"
    #include "stdlib.h"
    #include <cstring>
    #include <iostream>
    Calculator::Calculator(double op1, double op2, char* opcode) {
        this->operand1 = op1;
        this->operand2 = op2;
        operation = new char[30];
        strcpy_s(operation, 10, opcode);
    }
    double Calculator::doOperation() {
        if (strcmp(operation, "div") == 0)
            return operand1 / operand2;
        else if (strcmp(operation, "plus") == 0)
            return operand1 + operand2;
        else if (strcmp(operation, "minus") == 0)
            return operand1 - operand2;
        else if (strcmp(operation, "multi") == 0)
            return operand1*operand2;
    };
    
    

    Calculator.h

    #pragma once
    class Calculator {
        double operand1, operand2;
        char* operation;
    public:
        Calculator(double, double, char*);
        double doOperation();
    };
    

    主程序:

    #include <stdlib.h>  
    #include <string.h>  
    #include <stdio.h>  
    #include <string>  
    #include "Calculator.h"
    #include <iostream>
    using namespace std;
    
    int main(int argc, char *argv[]) 
    {
        if (argc != 4) {
            cerr << "Please input valid arguments";
            return -1;
        }
        double op1 = atof(argv[2]);
        double op2 = atof(argv[3]);
        char *opcode = argv[1];
        Calculator one(op1, op2, opcode);
        double m = one.doOperation();
        cout << m << endl;
        return 0;
    }
    

    其次,运行此类程序不是简单的按ctrl+F5,而需要接收命令行参数。
    方法是先在cmd命令行转到.exe所在目录,然后按照下图中方式加入命令行参数运行。

    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?