当前位置: 技术问答>linux和unix
QT_构造函数重载_重复定义问题
来源: 互联网 发布时间:2015-08-31
本文导语: 写的一个程序,连接时出现类成员函数重复定义的错误。原因是我对这个类的构造函数进行了重载, 注释掉重载函数就正常。不得其解,求高手解答~ // // info.h class A { public: A(); ~A(); A(const A &a); ...
写的一个程序,连接时出现类成员函数重复定义的错误。原因是我对这个类的构造函数进行了重载,
注释掉重载函数就正常。不得其解,求高手解答~
//
// info.h
class A
{
public:
A();
~A();
A(const A &a);
·//一些方法
·
·
private:
·//一些属性
·
·
};
· //方法的实现
·
·
// listitem.h
//
#include ···
#include “info.h”
class myListItem : public QListViewItem
{
public:
myListItem(QListViewItem * parent);
myListItem(QListViewItem * parent,const A &a);//加上这个构造函数就会出现类的重复定义
~myListItem();
·
·
·
private:
A info;
};
myListItem::myListItem(QListViewItem * parent,const A &a)
:QListViewItem(parent),info(a)
{
···
}
···
/////
因为我需要将ListViewItem和一个自定义的类相关联,因此我从ListViewItem类派生一个myListItem类,其中加入一个自定义类的数据成员;因为初始化的需要,我重载派生类的构造函数。
现在的问题是,一旦我加入重载的构造函数(声明和定义),连接时就会出现myListItem类所有方法
的重复定义错误和info类的所有方法重复定义错误。而使用默认构造函数,无重载构造函数时则一切正常。是我的这个构造函数声明和实现有什么问题么? 还是info类定义有什么问题?
这两个h文件都是使用了#ifndef #define #endif来保证不会因为重复引用造成重复定义的。
注释掉重载函数就正常。不得其解,求高手解答~
//
// info.h
class A
{
public:
A();
~A();
A(const A &a);
·//一些方法
·
·
private:
·//一些属性
·
·
};
· //方法的实现
·
·
// listitem.h
//
#include ···
#include “info.h”
class myListItem : public QListViewItem
{
public:
myListItem(QListViewItem * parent);
myListItem(QListViewItem * parent,const A &a);//加上这个构造函数就会出现类的重复定义
~myListItem();
·
·
·
private:
A info;
};
myListItem::myListItem(QListViewItem * parent,const A &a)
:QListViewItem(parent),info(a)
{
···
}
···
/////
因为我需要将ListViewItem和一个自定义的类相关联,因此我从ListViewItem类派生一个myListItem类,其中加入一个自定义类的数据成员;因为初始化的需要,我重载派生类的构造函数。
现在的问题是,一旦我加入重载的构造函数(声明和定义),连接时就会出现myListItem类所有方法
的重复定义错误和info类的所有方法重复定义错误。而使用默认构造函数,无重载构造函数时则一切正常。是我的这个构造函数声明和实现有什么问题么? 还是info类定义有什么问题?
这两个h文件都是使用了#ifndef #define #endif来保证不会因为重复引用造成重复定义的。
|
可能是QT的控件类的构造函数已经写死了. 但你派生时, 构造函数不是默认的就会找不到默认的构造的函数.
你可以去看看源程序.
你可以去看看源程序.