在Hnode
函数中,我想从包含50个元素的SNode
函数的输出中随机选择40个元素。但是我在SNode
函数中遇到了这个错误:
'int[int]' for array subscript
我在SNode
中调用了Hnode
函数,我想使用该函数的输出。
int HNode::database(int chunk_var)
{
SNode::database(chunk_var);
size=40;
chunk_var = chunk_var[ rand() % size ]; // Here i got error
return chunk_var ;
}
Snode
应该创建一个包含50个元素的数组:
int SNode::database(int chunk_var)
{
int array[50];
srand ( time(0) );
for(int j = 0; j<50 ;j++)
{
int myrand = rand() % 2 ;
myrand = myrand & 0x3ff;
array[j]= myrand;
chunk_var = array[j];
}
return chunk_var;
}
我怎样才能解决这个错误?
答案 0 :(得分:0)
int HNode::database(int chunk_var)
这里chunk_var是一个整数。您无法访问int的索引。如果要通过索引访问它,chunk_var必须是一个Integer数组。
实施例。
int chunk_var_arr[] = {1,2,3};
HNode::database(chunk_var_arr) //function call
int HNode::database(int* chunk_var) //function declaration
答案 1 :(得分:0)
我的猜测是你正在尝试做这样的事情:
std::vector<int> SNode::database(int chunk_var)
{
srand ( time(0) ); // do this atop main() instead!
std::vector<int> result;
for (int j = 0; j < chunk_var; j++)
{
int myrand = rand() % 2 ;
myrand = myrand & 0x3ff; // useless, after % it's 0 or 1 anyway
result.push_back(myrand);
}
return result;
}
int HNode::database(int chunk_var)
{
std::vector<int> a = SNode::database(chunk_var);
return a[ rand() % chunk_var ];
}
你显然已经超出了你的深度,并且应该学会在尝试编写类成员函数之前使用std::vector<>
,函数参数,for
循环等编写简单的独立函数。