2015-02-17 6 views
-2

В функции Hnode Я хочу случайным образом выбрать 40 элементов из вывода функции SNode, которая содержит 50 элементов. Но я получил эту ошибку в 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; 
} 

Как я могу получить поездку этой ошибки?

+2

Как вы можете индексировать нормальное целое число chunk_var? –

+2

Этот вопрос кажется очень похожим на http://stackoverflow.com/questions/28559933/error-invalid-types-intint-for-array-subscript –

+0

@EricZ есть ли другой способ сделать это? – nazari

ответ

0
int HNode::database(int chunk_var) 

Здесь chunk_var является Целочисленным. Вы не можете получить доступ к индексу int. Если вы хотите получить к нему доступ по индексу, chunk_var должен быть массивом Integer.

Ex.

int chunk_var_arr[] = {1,2,3}; 
HNode::database(chunk_var_arr) //function call 
int HNode::database(int* chunk_var) //function declaration 
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 циклы и т. д., прежде чем пытаться написать функции класса-члена.

+0

Большое спасибо. Но я хотел исправить размер массива в SNode до 50, и мне хотелось собрать 40 элементов из этого массива в Hnode. – nazari

Смежные вопросы