Копирование объекта для временного использования из целевого объекта параметра-указателя - PullRequest
1 голос
/ 09 марта 2012

Я пытаюсь скопировать объект, на который указывает указатель на const (в качестве аргумента) внутри функции, во временную, выделенную в стеке копию, которой я могу манипулировать и выполнять различные проверки.Как мне это сделать, не обманывая посредством const_cast?

bool f(const Foo* foo)
{
    (Create a temporary copy of foo)
    (Manipulate temporary copy of foo to test validity)
    (Output bool)
}

Ответы [ 3 ]

3 голосов
/ 09 марта 2012

Если это все, что делает ваша функция, почему бы просто не передать значение?

1 голос
/ 09 марта 2012

Это не указатель const, это указатель на const. Копирование всегда выполняется с помощью конструктора копирования, например:

bool f(const Foo* foo) {
    Foo tmp(*foo);
    // use tmp
    return file_not_found;
}

Каждый раз, когда вы чувствуете необходимость использовать const_cast, вы, вероятно, делаете что-то не так.

0 голосов
/ 09 марта 2012

Создайте новый объект Foo в функции, затем скопируйте в него содержимое аргумента.

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