Принудительный вызов функции-члена с постоянной версией - PullRequest
1 голос
/ 01 апреля 2012

Мне нужен способ принудительного вызова постоянной версии функции-члена. Я пытаюсь сделать это максимально эффективным. Есть хорошие решения?

РЕДАКТИРОВАТЬ: ищет универсальную функцию

Ответы [ 2 ]

1 голос
/ 01 апреля 2012

Сделать ссылку на тип const или указатель на тип const.

Вы можете сделать это необычным способом, но в конце концов, это единственный способ.

Хотя на самом деле я не понимаю, какова цель этого. Похоже, что это не стоит усилий.

Кроме того, я не совсем уверен, что понимаю, что вы подразумеваете под обобщенной функцией. Это требует некоторого пояснения, но если я правильно понимаю, вы хотите взять указатель / значение / ссылку и передать его в функцию, и он волшебным образом вызовет метод const? Это сработало бы, только если можно было бы использовать полиморфизм или хотя бы метод с тем же именем (шаблонизатором).

0 голосов
/ 01 апреля 2012

Он автоматически вызывает постоянную или неконстантную версию в зависимости от того, какой параметр передан.Вы можете разыгрывать только от постоянных до неконстантных.Это может показаться глупым, но это путь мира.

Например, вы обычно можете сделать это:

void function(char foo);
void function(int foo);

function(4);

Компилятор "решит за вас", какой из них вызыватьВы можете сделать это явным образом, выполнив

int x;
function((int)x);
function((char)x);

Однако нет эквивалента для явной передачи перегруженной версии const.

Конечно, вы можете просто определить только версия const, и параметры будут просто переданы как const.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...