gpt4 book ai didi

C++/Qt,获取派生对象变量名作为列表?

转载 作者:行者123 更新时间:2023-11-27 23:25:53 27 4
gpt4 key购买 nike

我不太确定如何解释这一点,但我会尝试。

我有一个对象 A,它有一个 rownr 和分区 nr。 B、C 继承自 A 并添加了一些其他变量(以及它们的 get/setter)

然后我有一个函数,它接受一个派生自 A(B、C...等)的变量,该变量将在数据库/表中创建一条记录,其列与对象具有的变量相同。

例如:

class A {
int paritionKey;
int rowKey;

set/get for them both
}

class B : A {
string color;

...
}

一个表将被称为“B”并且有 3 列,partitionKey,rowKey 和 color。

有什么方法可以不硬编码吗?或者最好的方法是在返回将用于构造表中新行的 xml 请求正文的一部分的类中创建一个 toString 方法? (使用休息)

最佳答案

听起来您在问是否有一种方法可以将 C++ 对象自动编码到数据库中。简短的回答是否定的,C++ 语言中没有内置的方法来执行此操作。你的 toString() 方法不是一个坏方法,尽管它确实需要你为每个类编写 toString() (并且可能在某些时候还需要 fromString() )方法......这是否是太多的工作将取决于您需要支持多少个此类。

或者你也可以看看Qt's property system -- 如果你不介意从 QObject 继承你的数据对象,你可以用 Q_PROPERTY 声明装饰你的类定义,以及每个属性的 getter 方法,然后你可以编写通用代码,使用 Qt 的 QMetaObject 类来迭代所有声明的任何给定 QObject 的属性以通用方式。这是可行的,因为 Qt 的 moc 预处理器(如果您使用 Qt,您无论如何都会运行它)将解析 Q_PROPERTY 宏,并且它可以为您自动生成大量必要的粘合代码。您仍然需要自己编写最后一步(通过遍历 myObject->metaObject()->property(int) 并为每个属性调用 myObject->property(propName) 将 QObject 的数据转换为 XML 或 SQL 命令),但至少你可以用通用的方式做到这一点,而不必为每个类编写单独的编码例程。

关于C++/Qt,获取派生对象变量名作为列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9561413/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com