【发布时间】:2016-10-25 20:04:42
【问题描述】:
这可能是下一个重复,但我在这段代码中没有发现错误:
#include <qwt_plot.h>
class QLinePlot : public QwtPlot
{
Q_OBJECT
public:
QLinePlot(QWidget* parent = 0, Qt::WindowFlags flags = 0): QwtPlot(parent)
{
}
~QLinePlot()
{
}
};
int main( int argc, char **argv )
{
QLinePlot * plot = new QLinePlot();
}
我删除了构建文件夹并再次运行了 qmake,但没有任何变化。错误信息是
test.cpp:7: undefined reference to `vtable for QLinePlot'
【问题讨论】:
-
最上面的相关链接是stackoverflow.com/questions/1552069/…,这看起来确实与该链接完全相同。如果不是,并且如果您理解那里给出的答案,您能否编辑您的问题以解释您的问题为何不同?
-
你在 cpp 中有类定义吗?如果是,请将其移至标题..
-
@H.G 在那种情况下,你提出了一个很好的观点,我的立场是正确的。
-
可能无法链接所需的库
-
@H.G.
moc处理任何有效的 C++ 源代码。标头在任何方面都不是特别的:通常所有.h和.cpp文件都应该是有效的C++,除非你搞砸了或者正在做一些宏元编程技巧。因此,您可以通过 moc 传递.h或.cpp。并且要表明foo.cpp中有可移动的内容,您需要在文件末尾附加#include "foo.moc"。就这样。然后重新运行qmake就可以了!