![]() |
1
15
根据OP的后续评论:
如果你是说
换句话说,当你创建一个
所以如果你打电话
如果您想获得调用
更多信息: |
![]() |
2
3
问题很可能不在您提供的代码中。你在切
另一件事是为什么
|
![]() |
3
2
可以使用“pure virtual”函数来确保只能使用子类,因为基类(dbobject)没有表名。 这将强制dbobject的所有实例化(通过继承的类)具有 有效的 表名
例子:
|
![]() |
4
1
首先,使用谷歌来读取C++中的“对象切片”。在C++中对对象进行切片是很容易的(但是错误的),特别是对于新手:如果按值传递一个对象(通常是错误的)而不是通过引用(通常是正确的),则发生切片,例如,如果声明一个“DBOBEKIT”(错误)类型的参数,而不是“DBOBKEDATP”和“const DBOBEDATA和”(右)。 其次,将以下语句添加到DBObject类中:
声明非默认的、未实现的复制和分配将导致编译时错误,在这种情况下,您试图按值传递一个dbobject:因此,第三步是通过将参数类型改为按引用传递来修复这些错误。 |
![]() |
5
0
您不应该内联虚拟函数,因为有些编译器不能很好地处理这个问题。 您应该将dbobject::tablename()和dbuserobject::tablename的实现移动到.cpp文件中。 |
![]() |
6
0
你在这里好像没做错什么。您确定问题不在qString::arg(…)方法中吗? 显式调用此->tablename();看起来像编译器问题。 --更新—— 实际上,TableName()的定义应该是
确保您的qstring的operator=for顺序正确(const和non-const版本),可能是从tablename()返回的qstring是通过堆栈的临时字符串,在这种情况下,将调用operator= |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |