【问题标题】:Small Class of a Large Class大班的小班
【发布时间】:2013-09-03 09:32:09
【问题描述】:

我正在做一个项目,我需要返回一个类,但该类有很多成员函数,但我只想返回特定的变量。上课是这样的

class CA
{
public:
var1;
var2;
var3;
member_func();
member_func();
member_func();
QMutex      memoryMutex_mono; //another class
};

有什么办法可以让我只返回前三个变量而不返回所有成员函数。此外,共有 15 个变量和 6 个成员函数。

请在这个项目中指导我。

谢谢

【问题讨论】:

  • 为什么有多少成员函数很重要?它们不占用对象中的空间,只有成员变量会。
  • 返回成员函数?
  • 其实这个类里面还有另外一个类,它又依赖于很多其他的函数。所以这就是为什么我只想返回变量。请查看已编辑的问题。
  • 您可以: 将这三个变量放在struct X 中。然后将X 的对象作为您班级的成员。然后返回该成员。
  • 亲爱的 SAM,我不想编辑原始类,因为该类依赖于许多其他类,而其他类也依赖于该类,因此更改原始类会产生更多问题。我只想掌握变量

标签: c++ class return


【解决方案1】:

如果我理解正确的话,你想要一个成员函数更少的类。

您可以通过使用继承来解决这个问题,方法是创建一个更基本的类来处理由另一个具有更多成员函数的类继承的最低限度(并且将是您使用的那个)。

类似

struct BasicObject
{
    var1;
    var2;
    var3;
    member_func1();
}

struct FullObject : public BasicObject
{
    member_func2();
    member_func3();
}

但正如我在评论中所说,对象的大小实际上并不重要,因为只有成员变量占用对象的空间,而不是其成员函数。

【讨论】:

  • 尊敬的先生,感谢您的回复。我就上述评论回复了上述评论。现在为此实际上我不想更改原始类,因为该类取决于许多其他类,而其他类也取决于该类..我只想获得一小部分变量。
  • @SaadSaadi 你不能让FullObject 类的名称与你当前的类相同,并且只创建包含成员变量的BasicObject 类吗?使用现有类的代码只需要重新编译,实际上不需要更改。
【解决方案2】:

听起来您只想获取部分数据,因此您可以定义一个结构来保存该数据:

typedef struct smallDataUnit
{
    int a;
    float b;
    uint32_t c;
}

然后使用“get”成员函数返回你想要的数据:

smallDataUnit member_func_get_small_data()
{
    smallDataUnit data;
    data.a = member_a;
    data.b = member_b;
    data.c = member_c;

    return data;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    相关资源
    最近更新 更多