Привет, может кто-нибудь объяснить, почему следующий вызов по значению?Почему это вызов по значению, хотя я передаю указатель?
Я думал, что когда я передаю клиенту переменной переменной GetClient, это будет вызов по ссылке. Но, дебютировав код, я показал, что установлен только параметр GetClient, и после выхода из него клиент, объявленный в основном, по-прежнему пуст.
Как мне определить GetClient(), чтобы он правильно установил мою клиентскую переменную? главный
int main()
{
Example::A a;
Example::B b;
Example::B* client = 0;
a.SetClient(1,&b);
a.GetClient(1,client);
if(client != 0)
{
std::cout<<"OK"<<std::endl;
}
}
класс А
namespace Example
{
class A
{
public:
void A::SetClient(int key, B* client)
{
clients[key] = client;
}
void A::GetClient(int key, B* client)
{
client = clients[key];
}
private:
B* clients[10];
};
}
класс B
параметр 'под клиента в' ЕОКП Функция lient' не имеет никакой цели и ничего не делает. –
Это ** не ** минимальный пример. Минимальным примером может быть нечто вроде 'void f (int a) {a = 10; } int main() {int n = 0; е (п); std :: cout << n << '\ n'; } ' –
Потому что вы ничего не передаете по ссылке. Вы передаете указатели по значению. – juanchopanza