UID:161606
UID:159353
UID:144037
lemonzll:class CDevice : public QObject{ Q_OBJECTpublic: CDevice(QObject *parent = 0): QObject(parent) {}....... (2015-06-09 17:21)
stlcours:1. 编译的时候,可能只需要.h。但是连接的时候仍然需要cpp的。也许有办法投机取巧,但是建议你写全了,不要偷懒。2. 父类应该定义 virtual void A(); virtual void B(); 子类直接起同名函数即可virtual void A();(其中子类virtual关键字可省略,效果一样),另外这不叫子类重载 .. (2015-06-09 17:21)
z55716368:写的很详细,关于在子类重载或者说是覆盖那些函数的时候,可以在.h中申明然后去cpp中实现吧? CustomDevice(QObject *parent = 0): CDevice(parent) {}这一句应该这样吗CustomDevice(QObject *parent = 0, CDevice *device = 0);和你的这种写法有什么区别? (2015-06-10 16:16)
lemonzll:是可以在.h中声明然后cpp中实现,也最好这样做。上面的例子是全写在.h里面了,就不需要有cpp文件。你问的那个函数是构造函数,专门用于类的初始化的,最好按我写的形式写,直接调用父类的构造函数。冒号后面的叫初始化列表,一般调用父类的构造函数这样写的 (2015-06-11 08:13)
lemonzll:是可以在.h中声明然后cpp中实现,也最好这样做。上面的例子是全写在.h里面了,就不需要有cpp文件。你问的那个函数是构造函数,专门用于类的初始化的,最好按我写的形式写,直接调用父类的构造函数。冒号后面的叫初始化列表,一般调用父类的构造函数这样写的
z55716368:按照我的想法我这样写了2个 不过在new子类的时候会弹出错误error: invalid new-expression of abstract class type 'CSerialport',麻烦你帮我看看 谢谢 (2015-06-11 08:54)
lemonzll:大致看了下,你说的提示那个错误意思是子类没有实现父类所有的纯虚函数,这样你这个子类就不能实例化的。你子类和父类的函数定义是不同的,这样子不行,你如果要实现那几个纯虚函数,函数定义必须一样的,返回值、函数名字、参数都需要一样,你现在那写法是参数不一样,这样就变 .. (2015-06-11 09:41)