Как мне принудительно установить константу памяти, на которую указывает obj-> val1 в функции fn?
#include <iostream>
struct foo {
int* val1;
int* val2;
int* val3;
};
void fn( const foo* obj )
{
// I don't want to be able to change the integer that val1 points to
//obj->val1 = new int[20]; // I can't change the pointer,
*(obj->val1) = 20; // But I can change the memory it points to...
}
int main(int argc, char* argv[])
{
// I need to be able to set foo and pass its value in as const into a function
foo stoben;
stoben.val1 = new int;
*(stoben.val1) = 0;
std::cout << *(stoben.val1) << std::endl; // Output is "0"
fn( &stoben );
std::cout << *(stoben.val1) << std::endl; // Output is "20"
delete stoben.val1;
return 0;
}
Код здесь довольно понятен. Мне нужно иметь возможность создать неконстантный объект и заполнить его данными, но затем передать его в функцию, где эти данные не могут быть изменены. Как я могу пойти по этому поводу?
Я знаю, что могу просто передать указатель на const int, но теоретически этот класс содержит несколько других указателей, которые мне также понадобятся в "fn".
Спасибо
Griff