0
我正在寻找一些关于如何组织我的C++代码的建议。组织C++代码
我有一个int数组,侧,我想是静态的,因为它的值在调用之间保持不变。这是因为我的函数foo()会递归地修改数组,所以我不希望副本被放在一边。此外,边的大小只能在编译时根据传入函数栏()的向量的大小来确定。
我想到了以下结构来布置这样的问题。
我保留一个全局的int指针,我可以用它指向我的int数组的地址,然后在foo中使用指针*一边来做我的修改。
请你给我建议这个代码的布局和组织?我对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;
}
你为什么包含'',但是在这里没有使用它:'int * side_local = new int [size]; '?为什么不简单地'std :: vector side_local(size);'?或者只是'side.resize(size);'而不是做任何代码? –
PaulMcKenzie
它取决于上下文,而你没有提供。阵列应该代表什么?它以某种方式与A链接?它应该归A所有?为什么不使用矢量?你不会通过传递参考或指针来复制... – Nelfeal