我有两个选择:
class X{
int* x;
int size = ...;
void create() {
x = new int[size];
use();
delete [] x;
}
void use() {//use array}
};
Run Code Online (Sandbox Code Playgroud)
要么:
class X{
int size = ...;
void create(){
int x[size];
use(x);
}
void use(int arg[]) {//use arg}
};
Run Code Online (Sandbox Code Playgroud)
哪个更好?
选项3更好,使用std::vector.
class X{
std::vector<int> x;
int size; // = ...; <-- the "=" part is illegal in C++03
void create() {
x.resize(size);
use();
}
};
Run Code Online (Sandbox Code Playgroud)
此外,您的第二个代码段是非法的,C++不支持VLA.