gpt4 book ai didi

c++ - 与泛型混淆

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

我有

class Foo : public QFrame {...}

在使用这个类的模块中,我有

QWidget* screen = this->parentWidget();
Foo* foo = (Foo*) screen->findChild<QFrame*>("foo1"); // foo1 is the name of the control from .ui file

这行得通。如果我把它改成

QWidget* screen = this->parentWidget();
Foo* foo = screen->findChild<Foo*>("foo1"); // foo1 is the name of the control from .ui file

我收到此链接器错误

Error 4 error LNK2001: unresolved external symbol "public: static struct QMetaObject const Foo::staticMetaObject" (?staticMetaObject@Foo@@2UQMetaObject@@B) Foo.obj

这两个代码片段有什么区别?为什么第一个有效而第二个无效?

最佳答案

这可能是因为 Q_DECLARE_METATYPE Foo 类中缺失

来自 Qt 文档

Adding a Q_DECLARE_METATYPE() makes the type 
known to all template based functions

有点像

class Foo : public QFrame
{
//everything
}

Q_DECLARE_METATYPE(Foo)

关于c++ - 与泛型混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8451662/

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