jjzjj

c++ - 简单的 C++ getter/setter

最近我将我的getter和setter编写为(注意:真正的类在getter/setter中做更多的事情):structA{constint&value()const{returnvalue_;}//getterint&value(){returnvalue_;}//getter/setterprivate:intvalue_;};它允许我执行以下操作:autoa=A{2};//non-constobjecta//createcopiesby"default"(valuealwaysreturnsaref!):intb=a.value();//b=2,isacopyofvalue:)au

c++ - 如何生成 setter 和 getter,并使用 C++ 预处理器定义 Q_PROPERTY()

我正在设计一个QT4类。到目前为止,我的类(class)是这样的:classGIHNode:publicQObject,publicQGraphicsItem{Q_OBJECTQ_INTERFACES(QGraphicsItem)[...]public:voidsetInteger(int);intgetInteger();[..]private:intInteger;Q_PROPERTY(intIntegerREADgetIntegerWRITEsetInteger)//DefinitionI'dliketoreplaceThesettersandgettersareimplemen

c++ - 这个 C++ setter/getter 模式破坏了什么?

在C++中使用GLSL语法我编写了自定义vector类,例如vec2、vec3等,它们模仿GLSL类型,大致如下所示:structvec3{inlinevec3(floatx,floaty,floatz):x(x),y(y),z(z){}union{floatx,r,s;};union{floaty,g,t;};union{floatz,b,p;};};vector上的操作是这样实现的:inlinevec3operator+(vec3a,vec3b){returnvec3(a.x+b.x,a.y+b.y,a.z+b.z);}这让我可以创建vector并使用类似GLSL的语法访问它们的组

c++ - 如何使用 const getter 对 std::set 进行排序

我有一个std::set容器,其元素是以下类的对象:classLaneConnector{public:constLane*getLaneFrom()const{returnFrom;}constLane*getLaneTo()const{returnTo;}private:Lane*From;Lane*To;}我的比较函数如下:structMyLaneConectorSorter{booloperator()(LaneConnector*c,LaneConnector*d){Lane*a=const_cast(c->getLaneFrom());Lane*b=const_cast(d

c++ - 对成员的 const 引用是否安全

如果我使用对另一个成员的const引用,这个引用有可能失效吗?classClass{public:constint&x{y};private:inty;};例如,当我在vector中使用此类的实例时这会在push_back之后增加其容量。根据标准,所有迭代器和引用都无效,如果vector必须增加其容量。引用之后还有效吗? 最佳答案 目前这是不安全的,因为当您复制Class的实例时,x将引用复制对象的y,而不是它自己的y。您可以通过运行以下代码来查看:intmain(){Classa{};std::vectorvec;vec.push

c++ - Getter 函数的 Const 正确性

这是一个关于const正确性的简单问题。我有这门课:templateclassFoo{public:std::mapmembers;templatestd::vector&member(conststd::string&memberName){returnboost::any_cast&>(members[memberName]);}};然后我有一个包含以下内容的仿函数:booloperator()(Foo&foo)const{std::vector&member=foo.member(_memberName);这里让我感到困惑的是我不能通过引用const来传递Foo,因为我正在调用非

c++ - 不同编程语言的getters和setters的使用

关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭11年前。Improvethisquestion所以我知道通常有很多关于getter和setter的问题,但我找不到与我的问题完全相同的问题。我想知道人们是否会根据不同的语言更改get/set的使用。我开始学习C++,并被教导使用getter和setter。这是我的理解:在C++(和Java?)中,变量可以是公共(public)的或私有(private)的,但我们不能混合使用。例如,我不能有一个仍然可以在类内部更改的只读变量。它要么全部是公

c++ - getter 的成本是零吗?

我有一个简单的类:classA{public:intget()const;private:voiddo_something();intvalue;}intA::get()const{returnvalue;}getter函数简单明了。Getters将使用它们,所以在do_something中我应该使用get()来访问value。我的问题是:编译器是否会优化getter,所以它等同于直接访问数据?或者如果我直接访问它我仍然会获得性能(这意味着更糟糕的设计)?A::do_something(){x=get();//or...x=value;} 最佳答案

c++ - 如何编写 C++ getter 和 setter

如果我需要为我编写一个setter和/或getter,我会这样写:structX{/*...*/};classFoo{private:Xx_;public:voidset_x(Xvalue){x_=value;}Xget_x(){returnx_;}};但是我听说这是编写setter和getter的Java风格,我应该用C++风格来编写。此外,有人告诉我这是低效的,甚至是不正确的。那是什么意思?如何用C++编写setter和getter?假设对getter和/或setter的需求是合理的。例如。也许我们在setter中做一些检查,或者我们只写getter。关于不需要getter和set

c++ - 访问者与公共(public)成员

我有一个类,其中包含许多具有读/写访问权限的内置类型成员。我应该让他们成为公共(public)成员并为每个成员提供获取/设置方法吗?结构如何? 最佳答案 拥有访问器(getter)和修饰器(setter)的全部原因是为您提供额外的间接级别。这种额外的间接级别允许您向公共(public)接口(interface)提供变量的只读View,同时不允许更改数据成员。您仍然可以使用私有(private)或protectedsetter。setter允许您在设置值时进行特殊的错误检查、验证和更正。例如setDirectory(conststd: