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