我目前正在将一堆旧的GWBASIC代码重构为python,以便可以在较新的计算机上运行。它们都是古老的工程数学程序,这些数学运算量很大,并且在整个过程中都大量使用GOTO语句。
我只是想知道您如何重构该语句?您是否只是在全局范围内声明所有变量并编写将对其进行修改的函数,还是只需要重写程序逻辑以使传递值有意义,或者是否有更好的方法呢?
下面的代码片段:
25 INPUT "EXISTING FILE (Y/N)";EF$
30 IF EF$="Y" OR EF$="y" THEN 4000
40 LOCATE 4,1:PRINT USING "<######> NUMBER OF JOINTS";NON+1;:GOSUB 1400:IF D$="" THEN 50 ELSE NON=VAL (D$)-1
50 PRINT:PRINT USING "<######> NUMBER OF MEMBER GROUPS";MG+1;:GOSUB 1400:IF D$="" THEN 60 ELSE MG=VAL (D$)-1
60 PRINT:PRINT USING "<######> NUMBER OF MEMBERS";M+1;:GOSUB 1400:IF D$="" THEN 70 ELSE M=VAL (D$)-1
70 PRINT:PRINT USING "<######> NUMBER OF SUPPORTS";NS+1;:GOSUB 1400:IF D$="" THEN 75 ELSE NS=VAL (D$)-1
75 E=200000!:PRINT:PRINT USING "<#########> YOUNGS MODULUS (MPa)";E;:GOSUB …Run Code Online (Sandbox Code Playgroud) 我是C++中的OOP新手,我不确定这是否可行,但我想在C++ std优先级队列中有多个类类型.
我设置了这些类,以便它们都从一个基类继承,然后使用基类来创建所有函数,我只是不知道如何让所有东西都调用子类函数.在我调用foo()函数时,它调用父函数而不是子函数
有没有办法在没有明确知道它是什么类型的情况下退回?我将有几个不同的子类,它们将执行不同的操作,而不仅仅是显示的单个类.
代码的输出目前是Parent我猜对了Child.
我有一种感觉我正在做virtual关键字的错误,应该foo()是一个纯粹的虚函数?
Parent.h
#pragma once
class Parent{
public:
virtual ~Parent(){};
virtual std::string foo() const { return "Parent"; }
};
Run Code Online (Sandbox Code Playgroud)
Child.h
#pragma once
#include <iostream>
#include "Parent.h"
class Child: public Parent{
public:
Child();
~Child();
std::string foo() const;
};
Run Code Online (Sandbox Code Playgroud)
Child.cpp
#include <iostream>
#include "Parent.h"
#include "Child.h"
Child::Child(){}
Child::~Child(){}
std::string Child::foo() const{ return "Child"; }
Run Code Online (Sandbox Code Playgroud)
main.cpp中
#include <iostream>
#include <queue>
#include "Parent.h"
#include "Child.h"
using namespace std;
//Fake compare …Run Code Online (Sandbox Code Playgroud)