读书人

在VS2008中能编译通过但在QT2.7.1+M

发布时间: 2013-07-08 14:13:00 作者: rapoo

在VS2008中能编译通过,但在QT2.7.1+MINGW无法通过,请教~~
这段报错:

SortedCHDLinkedList<T>::SortedCHDLinkedList(T value[], int n)  //构造由指定数组提供元素的双链表
{
head= new DLinkNode<T>(NULL); //创建头结点
head->prev = head;
head->next = head;
for (int i=0; i<n; i++) //构造非空链表
insert(value[i]);
}


D:\lianxi\lxCppdataStr\SortedCHDLinkedList.h:20: 错误:'head' was not declared in this scope

但实际上 head是父类的公共成员变量:
#include "DLinkNode.h"                           //双链表结点类

template <class T>
class CirHDoublyLinkedList //带头结点的循环双链表类
{
public:
DLinkNode<T> *head; //双链表的头指针

CirHDoublyLinkedList(); //构造空双链表
CirHDoublyLinkedList(T value[], int n); //构造由指定数组提供元素的双链表
~CirHDoublyLinkedList(); //析构




在VS2008中正常运行,QT下就是无法通过,到底怎么回事了?气死我了





[解决办法]
//试试下面两种写法看:
template <class T>
SortedCHDLinkedList<T>::SortedCHDLinkedList<>(T value[], int n)//构造由指定数组提供元素的双链表
{


head= new DLinkNode<T>(NULL); //创建头结点
head->prev = head;
head->next = head;
for (int i=0; i<n; i++) //构造非空链表
insert(value[i]);
}
//或者
template <class T>
SortedCHDLinkedList<T>::SortedCHDLinkedList<T>(T value[], int n)//构造由指定数组提供元素的双链表
{
head= new DLinkNode<T>(NULL); //创建头结点
head->prev = head;
head->next = head;
for (int i=0; i<n; i++) //构造非空链表
insert(value[i]);
}
[解决办法]



GCC不能正确继承模板类(或者有解决办法)
http://www.cppblog.com/ggggqqqqihc/archive/2008/03/02/43548.html

话说linux之父抨击C++(他支持C),我自从从事了linux系统上的开发才发现,不是C++不行啊,是linux上实在找不到个好的C++编译器.

读书人网 >C++

热点推荐