哑数据对象包含所有常见值c ++,这是正确的

Cpt*_*ing 3 c++

所以我是c ++的新手,我正在为科学应用而写作.

需要从几个输入文本文件中读取数据.

目前我将这些输入变量存储在一个对象中.(我们称之为inputObj).

我现在必须在我的所有对象周围传递这个"inputObj"是对的.看起来它刚刚成为全局变量的复杂版本.所以我想我可能会忽略OOP的观点.

我创建了一个g ++可编译的程序小例子:

#include<iostream>

class InputObj{
// this is the class that gets all the data
public:
void getInputs() {
    a = 1;
    b = 2;
};
int a;
int b;
};

class ExtraSolver{
//some of the work may be done in here
public:
    void doSomething(InputObj* io) {
        eA = io->a;
        eB = io->b;
        int something2 = eA+eB;
        std::cout<<something2<<std::endl;
    };  
private:
    int eA;
    int eB;

};

class MainSolver{
// I have most things happening from here

public:
void start() {
    //get inputs;
    inputObj_ = new InputObj();
    inputObj_ -> getInputs();
    myA = inputObj_->a;
    myB = inputObj_->b;

    //do some solve:
    int something = myA*myB;

    //do some extrasolve
    extraSolver_ = new ExtraSolver();
    extraSolver_ -> doSomething(inputObj_);

};
private:
InputObj* inputObj_;
ExtraSolver* extraSolver_;
int myA;
int myB;


};


int main() {
MainSolver mainSolver;
mainSolver.start();
}
Run Code Online (Sandbox Code Playgroud)

问题摘要:我的很多对象需要使用相同的变量.我的实施是否是实现这一目标的正确方法.

Pub*_*bby 5

当函数运行正常时,不要使用类.

new当自动存储工作正常时,请勿使用动态分配.

这是你如何写它:

#include<iostream>

struct inputs {
    int a;
    int b;
};

inputs getInputs() {
    return { 1, 2 };
}

void doSomething(inputs i) {
    int something2 = i.a + i.b;
    std::cout << something2 << std::endl;
}

int main() {
    //get inputs;
    inputs my_inputs = getInputs();

    //do some solve:
    int something = my_inputs.a * my_inputs.b;

    //do some extrasolve
    doSomething(my_inputs);
}
Run Code Online (Sandbox Code Playgroud)

我建议你阅读一本好书:The Definitive C++ Book Guide and List