组织c++代码

Organising C++ code

本文关键字:代码 c++ 组织      更新时间:2023-10-16

我正在寻找一些关于如何组织我的c++代码的建议。

我有一个int数组,我希望它是静态的,因为它的值在调用之间保持不变。这是因为我的函数foo(),会递归地修改数组的side,所以我不想对side进行复制。此外,side的大小只能在编译时通过传递给函数bar()的vector的大小来确定。

我想到了下面的结构来布局这样一个问题。

我保留了一个全局int型指针,side,然后我可以用它来指向我的int数组的地址,然后使用foo中的指针*side来做我的修改。

你能给我关于这个代码的布局和组织的建议吗?我对c++还是个新手,如果有任何关于下面结构的建议,我将不胜感激。

#include <iostream>
#include <vector>
using namespace std;
int *side;
class A {
    public:
        int foo(bool);
        int bar(vector<int>);
        void set_n(int n){ class_n = n;};
    private:
        int class_n;
};
int A::foo(bool fl)
{
    int n = class_n;
    for(int i = 0; i < n; i++) {
        // modify side[] and then recursively call foo
    }
    return 0;
}
int A::bar(vector<int> t)
{
    int size = t.size();
    set_n(size);
    int a = foo(true);
    int *side_local = new int[size]; 
    for(int i = 0; i < size; i++) {
        side_local[i] = 0;
    }
    side = side_local;
    return 0;
}
int main()
{
    A a;
    vector<int> t = {1, 2, 3};
    a.bar(t);
    return 0;
}

递归调用可以传递指向自身的指针:

void foo(int *pList)
{
    foo(pList); // recursive
}

同样的列表正在被处理。

也就是说,因为foo在类中,所以也不需要全局变量,而需要成员变量。

class A
{
    int *pMemberList;
    ...
    void foo();
}

现在foo可以一直看到pMemberList。

但是…传递它可能是一个更好的选择,因为在未来你的类可能会容纳2个列表,你想做foo