【问题标题】:How to change a private variable by reading a text file [closed]如何通过读取文本文件来更改私有变量[关闭]
【发布时间】:2014-01-11 08:56:09
【问题描述】:

好吧,我正在编写一些有趣的东西,但问题是:

我有一个带有私有字符串变量的类,我想更改它,但我想将它更改为从文本文件中读取的行。除了创建一个单独的字符串来获取文本文件,然后使用成员函数更改私有变量之外,没有别的办法吗?

这是我在这里的第一个问题,如果我需要澄清一些事情,请告诉我

【问题讨论】:

  • 您希望能够使用该类的私有字符串变量做什么?
  • 您可以将该变量用作从文件中读取的fread 函数的目标
  • 私有变量可以使用成员函数读写,所以如果你不想创建一个新变量,你必须编写一个类级函数来读取文件并将所需的值存储在私有变量中

标签: c++ file variables private


【解决方案1】:

私有成员被设计为使用类的公共方法进行操作。如果你不需要对它们做任何复杂的事情,创建 getter 和 setter 是可以的 - 方法只是读取或写入私有变量(也可能检查值左右)。

#include <string>

class A
{
private:
    std::string privateString;

public:
    std::string getPrivateString() const { return privateString; }
    void setPrivateString(const std::string& newString) { privateString = newString; }
};

如果您的类应该使用文件,您可以创建一个公共方法来从文件中读取该行并将其直接存储到私有成员。

【讨论】:

  • 请注意,@Melebius 在其 getter 和 setter 方法中使用了按值传递语义。根据您的编译器,这可以显着提升性能(请参阅Want Speed? Pass by Value.)。根据 A 类的用法,您可以选择使用传递引用,在这种情况下,您应该适当放置 const 限定符,以避免您的类的用户无意中修改内容,例如const std::string &amp; getPrivateString() constvoid setPrivateString(const std::string &amp; newString).
  • 如果我可以 nitpic,您介意在 getPrivateString() 的定义之后放置一个 const 吗?谢谢。
  • @Rob 好的,我在示例中添加了引用和const 限定符,尽管我的初衷是编写最小但有效的代码。但是,我仍然保留了 getPrivateString() 方法的返回值,因为您可以在较少限制的情况下使用它。甚至可以同时使用两个吸气剂。
  • @Melbius 谢谢!只想要一个const,而不是让您也添加一个传递引用示例。完全同意最小的代码示例更好:)
  • 我了解使用公共方法来操作私有成员,但是如何使用该方法来读取文本文件?
【解决方案2】:

如何在任何成员函数中更改该变量?

成员函数将有权编辑其私有成员变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 2014-12-05
    • 2013-08-09
    • 1970-01-01
    相关资源
    最近更新 更多