我定义了一个EdgeType结构体模版 |
|
10分 |
EdgeType(T h,T t,int c)
{ head=h; tail=t; cost=c; } 这构造函数就有问题,head和tail如果都是char *,怎么能用指针赋值呢?要申请内存再strcpy吧 void operator=(const EdgeType<T> & b) { strcpy(this->head,b.head); //调试程序的时候到这里就出错了 strcpy(this->tail,b.tail); this->cost=b.cost; } 这里也是类似的问题,head没有内存,直接用strcpy一般都会挂,还有,别忘记释放原来的内存,要不然又会有内存泄露 |
噢~~有道理,但是我还是有一个问题,因为书上的要求是要使用类模版,实际head类型是T类型,并不知道是char*,如果我为head 成员new了空间,等于说我的模版就没有使用,默认 就是char*类型,没有意义了,我要如何修改呢? |
|
10分 |
这时候明显要做模板特化,或者增加一个模板参数,比如: |
噢~~这样啊。。我也不太了解模版的特化,学习到了!太感谢了! |