【问题标题】:"Reset" object to default values; recall constructor?“重置”对象为默认值;召回构造函数?
【发布时间】:2017-03-26 21:04:25
【问题描述】:

我有一个带有构造函数的类characterData

class characterData() {
    private:
        int position[2];
        vector<vector<int> > pixelData;
        int num;
    public:
        characterData() {
            num = -1;
        }
        void setValues(int p[2], vector<vector<int> > v, int n) {
            position[0] = p[0];
            position[1] = p[1];
            pixelData = v;
            num = n; // if setValues() is called, n will always > -1
        }
};

我这样做是为了让我的代码中有一个“空”characterData。我的思考过程是如果num == -1setValues() 尚未在characterData 对象上调用。

稍后在我的代码中,我有一个 characterData k,它只是被初始化,setValues() 没有被调用,所以 k.num == -1

最终我更改了k 的值,但希望将其“重置”为原始形式。

characterData k;
// some assignments happen, k = something else
k = new characterData(); // reset k

以上行不通。我需要重置k,这样k.num == -1。没有成员 setter/mutator 函数可以让我更改 num:我的想法是调用构造函数,但这不起作用。

如何将k 重置为“空”状态?

【问题讨论】:

  • 如果他们用n == -1 调用setValues 怎么办?
  • @M.M n 派生自 list 的大小。如问题所述,n 永远不会低于 0。

标签: c++ object constructor


【解决方案1】:

再次使用默认构造函数即可:

  characterData c;
  c.setvalues( ... );
  c = characterData();

虽然我不会说这是一个特别棒的设计。

【讨论】:

  • 我同意这不是好的设计,但我正在创建一个需要改进的主干。我需要一种方法来创建“空”characterData 并将某些内容重置为空 characterData
  • 为什么这是一个糟糕的设计/您有改进的想法吗?
【解决方案2】:

添加一个clear 函数可能吗?

    void clear() {
        num = -1;
    }

【讨论】:

    猜你喜欢
    • 2017-04-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 2022-01-04
    相关资源
    最近更新 更多