首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

在VS2008中能编译通过,但在QT2.7.1+MINGW无法通过,请问~

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

在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++编译器.

热点排行