| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 763 人关注过本帖
标题:[求助]摸板类出问题了。。。。。。。
只看楼主 加入收藏
ming206
Rank: 2
来 自:重庆
等 级:等待验证会员
威 望:3
帖 子:545
专家分:7
注 册:2005-8-2
结帖率:100%
收藏
 问题点数:0 回复次数:6 
[求助]摸板类出问题了。。。。。。。

一个单独的List.h头文件:
namespace MobelList{
//
#if !defined(AFX_LIST_H__A00FBDB1_BAC0_476C_83DE_12D836FB14BD__INCLUDED_)
#define AFX_LIST_H__A00FBDB1_BAC0_476C_83DE_12D836FB14BD__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//定义结构
template <typename T>
struct Node
{
Node(T& d):c(d),next(0),pref(0){}
T c;
Node *next,*pref;
};//------------------------------------
//类摸板定义
template <typename T>
class List
{
Node<T> *first,*last;
public:
List(); //构造
void add(T& c); //
void remove(T& c); //
Node<T>* find(T& c); //
void print(); //
~List(); //析构

};//-------------------------------------
#endif // !defined(AFX_LIST_H__A00FBDB1_BAC0_476C_83DE_12D836FB14BD__INCLUDED_)
//
template <typename T>
List<T>::List():first(0),last(0){}
//---------------------------------------
/**
*方法名:add
*功 能:添加
*/
template <typename T>
void List<T>::add(T& n)
{
Node<T>* p=new Node<T> (n);
p->next=first;
first=p;
(last ? p->next->pref:last)=p;
}//--------------------------------------
/**
*方法名:find
*功 能:查找
*/
template <typename T>
Node<T>* List<T>::find(T& n)
{
for(Node<T>* p=first;p;p=p->next)
if(p->c==n) return p;
return 0;
}//-------------------------------------
/**
*方法名:remove
*功 能:移除
*/
template <typename T>
void List<T>::remove(T& n)
{
if(!(Node<T>* p=find(n))) return;
(p->next ? p->next->pref:last) = p->pref;
(p->pref ? p->pref->next:first) = p->next;
delete p;
}//------------------------------------
/**
*方法名:print
*功 能:打印
*/
template <typename T>
void List<T>::print()
{
for(Node<T>* p=first;p;p=p->next)
cout<<p->c<<" ";
cout<<endl;
}
/**
*方法名:~List
*功 能:销毁
*/
template <typename T>
List<T>::~List()
{
for(Node<T>* p;p=first;delete p)
first=first->next;
}
}//end MobelList

//**************************************************************
//main引用:

#include <iostream>
#include <string>
#include "List.h"
using namespace std;
using namespace MobelList;
int main(int argv,char** argc)
{
List<char> *StrList=new List<char>();
StrList->add("mo");
StrList->add("xiaoming");
StrList->print();
delete StrList;
return 0;
}

//**********************************************************
错误提示:
--------------------Configuration: main - Win32 Debug--------------------
Compiling...
main.cpp
D:\vc++\NodeList\main.cpp(9) : error C2664: 'add' : cannot convert parameter 1 from 'char [3]' to 'char &'
A reference that is not to 'const' cannot be bound to a non-lvalue
D:\vc++\NodeList\main.cpp(10) : error C2664: 'add' : cannot convert parameter 1 from 'char [9]' to 'char &'
A reference that is not to 'const' cannot be bound to a non-lvalue
Error executing cl.exe.

main.exe - 2 error(s), 0 warning(s)


即使我用int类型来调摸板也是出错,。不知道为什么,小弟刚接触C++,兄弟们帮看哈。

搜索更多相关主题的帖子: Node MSC INCLUDED VER next 
2006-10-10 13:23
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
Node<T>* List<T>::find(T& n)

这里如果要是变成char 就是这样
Node* List::find(char& n)
你看你传(“MO”)还对么/
改成指针

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-10-11 07:17
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
前后不一致啊。

typedef string T;

List<T> *StrList=new List<T>();
StrList->add(T("mo"));
StrList->add(T("xiaoming"));


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-10-11 09:35
ming206
Rank: 2
来 自:重庆
等 级:等待验证会员
威 望:3
帖 子:545
专家分:7
注 册:2005-8-2
收藏
得分:0 
还是出问题,我知道了,我改去掉引用T&amp;的&amp;就可以了,请问有什么分别?

外贸综合平台:E贸通
2006-10-11 12:21
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
以下是引用ming206在2006-10-11 12:21:25的发言:
还是出问题,我知道了,我改去掉引用T&的&就可以了,请问有什么分别?

这也不对吧,用 T*


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-10-12 07:03
makewelldone
Rank: 1
来 自:江苏南京
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-9-25
收藏
得分:0 
你用的形参是一个字符变量,而你在调用时用的是
 字符串,在隐式将字CHAR 转为字符串的做法是
在形参中用 T* 来代替模板中的变量
2006-10-13 13:15
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 

同三楼wfpb
List<string> *StrList=new List<string>();
StrList->add(string("mo"));
StrList->add(string("xiaoming"));


2006-10-13 15:50
快速回复:[求助]摸板类出问题了。。。。。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023584 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved