请帮忙看看代码有什么问题

MutouMajia 2009-06-15 11:09:31

#ifndef MGRAPH_H_INCLUDED
#define MGRAPH_H_INCLUDED

template <class T>

class Graph
{
public:
virtual int Insert(int u, int v, T& w) = 0;
virtual int Remove(int u, int v) = 0;
virtual bool Exist(int u, int v) const = 0;

protected:
int n; // 顶点数
int e; // 边数
};

template <class T>
class MGraph : public Graph<T>
{
public:
MGraph(int mSize, const T& noedg);
~MGraph();

int Insert(int u, int v, T& w);
int Remove(int u, int v);
bool Exist(int u, int v) const;

protected:
T ** a;
T ** noEdge;
};


template <class T>
MGraph<T>::MGraph(int mSize, const T& noedg)
{
n = mSize;
e = 0;
noEdge = noedg;
a = new T* [n];

for (int i = 0; i < n; i++)
{
a[i] = new T[n];
for (int j = 0; j < n; j++)
{
a[i][j] = noEdge;
}
a[i][i] = 0;
}
}


template <class T>
MGraph<T>::~MGrpah()
{
for (int i = 0; i < n; i++)
{
delete [] a[i];
delete [] a;
}
}

template <class T>
bool MGraph<T>::Exist(int u, int v) const
{
if ( u < 0 || v < 0 || u > n - 1 || v > n - 1 || u == v || a[u][v] == noEdge)
return false;
return true;
}

template <class T>
int MGraph<T>::Insert(int u, int v, T& w)
{
if ( u < 0 || v < 0 || u > n - 1 || v > n - 1 || u == v )
return -1;
if (a[u][v] != noEdge)
return 0;

a[u][v] = w;
e ++;
return 1;
}

template <class T>
int MGraph<T>::Remove(int u, int v)
{
if ( u < 0 || v < 0 || u > n - 1 || v > n - 1 || u == v )
return -1;
if (a[u][v] == noEdge)
return 0;

a[u][v] = noEdge;
e --;
return 1;
}


#endif // MGRAPH_H_INCLUDED




为什么在MGraph的构造函数里使用基类成员n时,
IDE报错说:n没有定义呢???
...全文
69 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
josephwuxiaameng 2009-06-15
  • 打赏
  • 举报
回复
似乎还有别的问题吧?
error C2523: 'MGraph<T>::~MGrpah' : destructor tag mismatch
「已注销」 2009-06-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 MutouMajia 的回复:]
呵呵,恩,用的是GCC,呵呵,谢谢!
标准C++中规定要一定要加Graph <T>::前缀吗?
[/Quote]
是的。
GCC完全按标准来,VC增强了易用性。
MutouMajia 2009-06-15
  • 打赏
  • 举报
回复
呵呵,恩,用的是GCC,呵呵,谢谢!
标准C++中规定要一定要加Graph<T>::前缀吗?
「已注销」 2009-06-15
  • 打赏
  • 举报
回复
或使用:
using Graph<T>::n;
把上面这句放在MGraph的定义内。

这样,就不用每次都这样了。
「已注销」 2009-06-15
  • 打赏
  • 举报
回复
你用的是GCC,语法检查比VC严格。
「已注销」 2009-06-15
  • 打赏
  • 举报
回复
这样访问:
Graph<T>::n
【pytorch(cuda)】基于DQN算法的无人机三维城市空间航线规划(Python代码实现)内容概要:本文档介绍了基于DQN(深度Q网络)算法的无人机在三维城市空间中的航线规划方法,结合PyTorch框架和CUDA加速实现Python代码编程。该方案利用深度强化学习技术,使无人机能够在复杂的城市环境中自主学习最优飞行路径,有效避开障碍物并实现高效导航。文中涵盖了算法设计、环境建模、奖励机制设定、神经网络结构搭建及训练过程等关键技术细节,并通过仿真实验验证了方法的有效性和鲁棒性。此外,文档还提及相关路径规划、强化学习及其他科研领域的多种算法与应用场景。; 适合人群:具备一定Python编程基础和深度学习背景,熟悉强化学习或路径规划方向的研究生、科研人员及从事无人机导航、智能交通等领域开发工作的技术人员。; 使用场景及目标:①应用于三维城市环境下无人机自动避障与路径优化;②为深度强化学习在实际工程中的落地提供参考案例;③帮助读者掌握DQN算法在连续状态空间中的建模与实现技巧; 阅读建议:建议读者结合提供的代码资源进行实践操作,重点关注DQN网络结构设计、状态-动作空间定义以及奖励函数的构建逻辑,同时可对比其他路径规划算法(如A*、RRT、PSO等)以加深理解。

65,206

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧