jjzjj

c++ - 异常类中的 Setter

在异常类中使用setter成员函数可能意味着什么?使用setter的动机是有时在throw点没有足够的可用数据以便在catch点正确处理异常;因此在展开堆栈时必须添加附加信息。 最佳答案 查看Boost.Exception图书馆,最准确地说是thispage在标题为将任意数据添加到事件异常对象的段落中:voidparse_file(charconst*file_name){boost::shared_ptrf=file_open(file_name,"rb");assert(f);try{charbuf[1024];file_rea

c++ - 在构造函数中使用 setter

我是一名尝试学习C++的Java开发人员。是否可以在构造函数中使用setter以重用setter提供的健全性检查?例如:#includeusingnamespacestd;classTest{private:intfoo;voidsetFoo(intfoo){if(foofoo=foo;}public:Test(intfoo){setFoo(foo);};}; 最佳答案 是的,建议这样做,基本上是因为你已经提到的原因。另一方面,您应该问问自己是否需要setter而不是直接在构造函数中实现检查。我写这篇文章的原因是setter通常会导

父返回子中的 C++ 函数

我想让我的类中的修改器(setter)返回this以允许类似jQuery的a.name("something").address("somethingelse");我有一个父类(Entity)和几个子类(Client、Agentetc.)。大多数事物的修改器都继承自Entity类(如名称或地址),但它们返回一个Entity对象,因此我无法对它们调用Client修改器。换句话说://namemutatorEntity&Entity::name(conststring&name){//[...]checks_name=name;return*this;}//budgetRangemutat

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

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

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:

c++ - 如何在不生成拷贝的情况下使用 getter 和 setter?

我想知道如何为占用大量内存的成员变量使用getter和setter。通常我会这样做:classA{private:BigObjectobject;public:BigObjectgetObject()const{returnobject;}voidsetObject(constBigObject&object){this->object=object;}};但是我相信这个getter和setter会复制我不想要的BigObject。有更好的方法吗?我想这样做,但我在网上看到这不是一个好主意,因为如果使用不当会导致段错误:BigObject&getObject(){returnobjec

c++ - 将 std::atomic_flag 包装在 getter/setter 中是否会使它的 "atomicity"无效?

假设我有一个包含std::atomic_flag作为私有(private)成员的类,通过getter公开。类似于以下内容(伪代码):classThing{private:std::atomic_flagready=ATOMIC_FLAG_INIT;public:isReady(){returnready.test_and_set();}}我天真的问题是:通过方法查询标志是否会将其变成非原子操作,成为非原子函数调用(或者是?)?我是否应该让我的ready标记为公共(public)成员并直接查询它? 最佳答案 不,它没有。test_an

c++ - 配置结构与 setter

我最近遇到了使用配置对象而不是通常的setter方法进行配置的类。一个小例子:classA{inta,b;public:A(constAConfiguration&conf){a=conf.a;b=conf.b;}};structAConfiguration{inta,b;};优点:您可以扩展您的对象并轻松保证新值的合理默认值,而您的用户根本不需要知道它。您可以检查配置的一致性(例如,您的类只允许某些值的组合)通过省略setter可以节省大量代码。您获得一个默认构造函数,用于为您的配置结构指定默认构造函数并使用A(constAConfiguration&conf=AConfigurat

selectonemenu未调用的Setter例程

我正在使用PrimeFaces6.1,并与SelectoneMenu之一有问题。我只将页面减少到SelectOneMenu-Item,但无法弄清楚问题所在的位置。xhtml页:#{interfaceFileItem.fileName}转换器:@ManagedBean@SessionScoped@Named("interfaceFileConverter")publicclassInterfaceFileConverterimplementsConverter{privatefinalLoggerlogger=Logger.getLogger(this.getClass().getName())