C++不能返回數組類型,且為了安全,應怎麽設計這個類?謝謝

WorldCreater 2011-09-21 07:22:12
C++不能返回數組類型,且為了安全,應怎麽設計這個類?

class A {
public:
getA(); ///////这个函數怎么設計
protect:
private:
數組類型的 value;
}

我想在某个打印函數只使用如 printf( a.getValue());
但不希望value被如 delete getValue() 等語句释放掉。

應該以什么样的形式傳出 value ?
getValue() 的返回值應該是什么類型?

謝謝
...全文
93 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
WorldCreater 2011-09-21
  • 打赏
  • 举报
回复
多謝 stendson 兄
const 加在函數前 getValue() 后,
就不能通过 x = clazz.getValue() 获得从類外部改动 類内部的 private 部值了,
不過
const 要加在函數前才行,而不是函數后

有點奇怪的是 const 在頭文件的声明中要加,在 cpp 的文件中也要加
而 static 在頭文件中加就可以編譯通過了
morebread 2011-09-21
  • 打赏
  • 举报
回复
如果纯粹是返回结构体的话,那就不要返回引用类型啊
直接 结构体 getvalue(){return a.value;} 就可以了啊。这样外部获取到得值仅仅是一个拷贝,没法对a的value进行修改的
fengskill 2011-09-21
  • 打赏
  • 举报
回复
6楼思路使我豁然开朗
chentao4669 2011-09-21
  • 打赏
  • 举报
回复
经常见到的就有一个例子,int main(int argc,char * argv[])
这个后面char * argv[]的就是一个char * 的数组啊。你可以借鉴一下。
用参数返回用void getValue(类型 * Array[]);应该是可以的吧。
  • 打赏
  • 举报
回复
new或者vector
luciferisnotsatan 2011-09-21
  • 打赏
  • 举报
回复
使用vector取代数组
pdsspj 2011-09-21
  • 打赏
  • 举报
回复
每天回复加10分,不是miam() 吗?
stendson 2011-09-21
  • 打赏
  • 举报
回复
传出指针,构造分配内存,析构释放,函数加上const属性防止改变
char* GetValue()const;
WorldCreater 2011-09-21
  • 打赏
  • 举报
回复
getValue() 当然可以访问 value
可是:如果这么写
數組& getValue() { return this.value; }

x = o->getValue(); 后 可以通過对 x 賦值改变 o 内部成员字段值
我希望通過 getValue() 能返回值,
但不能因為 getValue() 被人通過類外部的方法赋值
mpz_t &aaa = a.getValue();
mpz_set(aaa,bbb);
mpz_clear(bbb);
这段代碼能改变 a 内部的 value 值, 而这個 value 值放在 private 部,
本不愿被人以類成員函數外的途徑訪問
z15881328993 2011-09-21
  • 打赏
  • 举报
回复
getValue()可以访问value吧,自己访自己的东西合情理的
stendson 2011-09-21
  • 打赏
  • 举报
回复
加在前是对函数返回值不能变,加在后是成员变量不能变(可通过mutable改变),在指针传递动态内存时最好将实参即成员变量设为const

64,650

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧