gpt4 book ai didi

c++ - C/C++ : Pointers within Const Struct

转载 作者:可可西里 更新时间:2023-11-01 17:37:34 25 4
gpt4 key购买 nike

如何在函数 fn 中强制 obj->val1 指向的内存的常量性?

#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;
}

这里的代码非常 self 解释。我需要能够制作一个非常量对象并用数据填充它,然后将它传递给无法修改此数据的函数。我该怎么做?

我知道我可以只传递一个 const int 指针,但理论上,这个类包含我在“fn”中也需要的其他几个指针。

谢谢,

格里夫

最佳答案

由于您标记为 C++,您可以将成员设置为 private 并创建一个返回 const int * 的访问器。您最初可以通过构造函数或 friend 函数设置成员。

关于c++ - C/C++ : Pointers within Const Struct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3176518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com