当前位置:  开发笔记 > 编程语言 > 正文

在C++中创建只读(公共)类成员

如何解决《在C++中创建只读(公共)类成员》经验,为你挑选了1个好方法。

我来自ActionScript 3等语言的背景,我们有一种特殊的方法可以将成员变量定义为实例和设置/获取受保护或私有成员值的方法.让我举个例子:

在课堂上,我们可以这样说:

private var _myString:String;

public get myString():String 
{
    return _myString;
}

public set myString(newValue:String):void
{
    //Do some super secret member protection n' stuff
    _myString = newValue;
}

然后在该对象之外我可以执行以下操作:

trace(myClass.myString); //Output whatever _myString is. (note the lack of (). It's being accessed like property not a method...

更进一步,我可以做一些像删除"public set myString"方法的东西,所以如果有人试图用我的类做这个:

myClass.myString = "Something"; //Try to assign - again note the lack of ()

它会抛出一个错误,让用户知道该属性是以只读方式提供的.

既然我使用C++并且它比Actionscript 3更加出色,我想知道如何模仿这种行为.我不想使用一堆脏getVariable()setVariable()方法.我希望通过一些操作符重载技巧我可以在这里完全相同的事情.注意我是菜鸟,所以请你这样说.:)

更新 我想最简单的解释方法是,我试图基本上有getter和setter但是通过赋值调用它们而不是用括号()来调用它们.



1> C Johnson..:

对不起,使用C++,语法糖不存在,这意味着你必须自己实现get/set方法.因此,在您的情况下,您将不得不实现一个getVariable()方法,而不是它的等效Set方法,以使其只读.

并且请不要诉诸宏来制作它看起来你有一些只读属性.5年后,当他们阅读你的代码时,这只会让人失望.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有