| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 669 人关注过本帖
标题:请求各位一个问题
只看楼主 加入收藏
cavinlu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-9-24
收藏
 问题点数:0 回复次数:5 
请求各位一个问题

const int MaxVertexes=20; template<class vertexType,class arcType> class Graph; template<class arcType>class ArcNode{ friend class Graph<vertexType,arcType>; private: int adjvex; arcType weight; ArcNode<arcType>*nextarc; ArcNode(){} ArcNode(int v,arcType w):adjvex(v),weight(w),nextarc(NULL){} };

template<class vertexType,class arcType>class VertexNode{ friend class Graph< vertexType,arcType>; private: vertexType data; ArcNode<arcType>*firstarc; }; Compiling... AdjcentTable.cpp D:\AdjcentTable\AdjcentTable.cpp(4) : error C2065: 'vertexType' : undeclared identifier D:\AdjcentTable\AdjcentTable.cpp(11) : see reference to class template instantiation 'ArcNode<arcType>' being compiled 请问上述程序到底错在那里,我找了半天没啥错啊? 多谢了

搜索更多相关主题的帖子: 请求 
2005-10-01 15:46
cavinlu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-9-24
收藏
得分:0 
为啥没人回答我啊?

难道这问题很难吗?

恳请各位帮帮我啊!

多谢了
2005-10-02 21:31
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
[QUOTE] error C2065: 'vertexType' : undeclared identifier [/QUOTE] 既然你看到了这条出错提示信息,为什么还说找了半天没啥错啊? #include <iostream> #include <cstdlib> using namespace std; const int MaxVertexes=20; template<class vertexType,class arcType> class Graph; class vertexType; template<class arcType> class ArcNode { friend class Graph<vertexType,arcType>; private: int adjvex; arcType weight; ArcNode<arcType>*nextarc; ArcNode(){} ArcNode(int v,arcType w):adjvex(v),weight(w),nextarc(NULL){} }; template<class vertexType,class arcType> class VertexNode { friend class Graph< vertexType,arcType>; private: vertexType data; ArcNode<arcType>*firstarc; }; int main() { // your code here system("pause"); return 0; }

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-10-02 23:25
cavinlu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-9-24
收藏
得分:0 
感谢楼上高手指点!

请问
template&lt;class vertexType,class arcType&gt; class Graph;

如果我不加class vertexType;为啥会错呢?

这个问题很怪啊,我觉得!模板我设定两个参数为啥会错呢?

恳请高手指点,多谢了!
2005-10-03 12:35
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
请注意C++ 中 class 的先后次序很重要。
如果 class B, 定义在 class A 后面,而 class A 中又要用到 B 的对象,那么问题就来了,因为这个时候, A还不知道有B这么个class , 那么凭什么 A 可以对 B 操作呢? 所以就出错了,为了避免这个问题,怎么办呢? 那就是在A 之前先申明一下B,这样A 的 class 中就可以用到B了, 尽管B的定义在后面才给出。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-10-03 16:22
cavinlu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-9-24
收藏
得分:0 
非常感谢版主详尽的解答! 可我还是有些不明白: template<class vertexType,class arcType> class Graph; 我在上面先声明了Graph类,并在模板类中预设了两个参数:vertexType 和 arcType 一个用来保存顶点信息,一个用来保存边信息 随后我又声明: template<class arcType>class ArcNode{ friend class Graph<vertexType,arcType>; //请您注意这句 private: int adjvex; arcType weight; ArcNode<arcType>*nextarc; ArcNode(){} ArcNode(int v,arcType w):adjvex(v),weight(w),nextarc(NULL){} }; 我的确在ArcNode类的声明前先声明了Graph类,并设Graph类为ArcNode的友元, 为社么编译器会说vertexType没有定义过呢? 都晕啊! 望各位高人指点迷津啊
2005-10-03 17:09
快速回复:请求各位一个问题
数据加载中...
 
   



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

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