2013-03-09 2 views
0

Я уверен, что это было задано раньше, но поиск «C++» «указатель» «function» «array» меня нигде не дает.C++ Basic Double Pointer Passing

У меня есть некоторые вещи, объявленные в основной, который выглядит следующим образом:

struct point{ 
    float x; 
    float y; 
    int m; 
    float points[10]; 
    point *next; 
}; 
struct neighbor{ 
    float dist; 
    point *pt; 
}; 
neighbor **candidate = NULL; 

И я хочу передать «кандидата» на функцию таким образом, что я могу сделать:

candidate = new neighbor*[10]; 
for(int i = 0;i<10;i++) 
    candidate[i] = new neighbor; 

Залейте различные данные, а затем выйдите из функции без использования оператора return (это важно, потому что я использую boost-потоки, которые не могут использовать функцию, отличную от void) и имеют главную функцию, чтобы видеть изменения, которые выполняла функция.

Извините, что это так просто, но я думаю, что это правильно, не работает, и я не могу найти то, что ищу. Спасибо заранее

ответ

2

Accept ссылка:

void fun(neighbor **& candidate); 

Или указатель:

void fun(neighbor *** candidate); 

Там почти нулевой повод когда-нибудь понадобится двойной косвенность указатель в C++. Вы почти наверняка не используете язык в своих силах.