Я экспериментировал с оператором const_cast и пытаюсь переопределить константный статус параметра о передаются в качестве аргумента:const_cast: переопределить константный статус
void function1 (const Object *o)
{
...
function2(const_cast < Object *> (o)); //Exception in g++
}
void function2 (Object *o) {}
Но переопределение константного статуса O бросает исключение в г ++ (GNU/Linux), в VS 2010 (Win) он хорошо работает ...
Есть ли более надежный способ переопределения константного статуса параметра функции?
Update:
MSDN пишут:. Вы не можете использовать const_cast оператор непосредственно переопределить постоянный статус с постоянной переменной :-(
Какое исключение вы получаете? Код, который вы опубликовали, отлично подходит для g ++. – Dani
Пожалуйста, покажите нам, где вы называете 'function1()', и имейте в виду, что использование 'const_cast' для удаления константы из объекта по-настоящему const (в этом случае' const Object') приводит к неопределенному поведению, вплоть до исключения. – cdhowie
Можете ли вы сделать код, который вы показываете * полный * (но все же минимальный) пример? Трудно понять, что вы видите из этого фрагмента. – Flexo