0
我一直在环顾QMetaData和QObject调用className()。我想在我自己的班级复制这个,但我不知道QT是如何做到的。我的意思是,我做以下,但不输出正确类(忽略任何语法错误):Qt QMetaData类名执行
#include <iostream>
#define CLASS(name) \
std::string className() { \
return #name; \
}
class A {
public:
CLASS(A)
A(){}
~A(){}
void output() {
std::cout << className() << std::endl;
}
};
class B: public A{
public:
CLASS(B)
B(){}
~B(){}
};
int main() {
B b;
b.output(); // This obviously outputs "A" but I would
// like it to output "B" from the base class
// function
return 0;
}
的Qt如何拥有它,你不必添加任何代码只是Q_OBJECT宏和即使基类具有输出函数(在Qt中,我的意思是QObject :: debugObjectTree()),也可以从基类中获得派生类的className。 Qt如何在不向派生类添加任何额外代码(可能是宏)的情况下实现此效果,其中基类可以输出派生类的类名?
在此先感谢。
谢谢!我不知道解决方案会很简单!我忘了虚拟允许你重写成员函数。 – user654628 2012-07-23 14:55:46