|
|
偶实在不好意思在这里求助各位~~但是昨天晚上把这个程序(见下)看了无数遍~~调试来调试去~~觉得实在找不出错误~~也以为自己对模板理解有错误,如果有,还请大家告诉我我在哪里理解错了没,小弟拜谢了----主要这里看上去象是模板嵌套~~逼不得以才来求助大家~~
/////template.h
#include <iostream>
using namespace std;
template <class Type>
class Node
{
private:
Type m_Data;
public:
Node() { m_Data=0; }
void Set_m_Data(Type param);
Type Get_m_Data();
};
template <class Type>
Type Node<Type>::Get_m_Data()
{
cout <<"Now in the Get_m_Data m_Data=" <<m_Data<<endl;
return m_Data;
}
template <class Type>
void Node <Type> ::Set_m_Data(Type param)
{
cout << "Set_m_Data was called and param=" <<param <<endl;
m_Data=param;
cout <<"now in the Set_m_Data and m_Data=" <<m_Data <<endl;
}
/////////////////////////////////
template <class Type>
class LinkedList
{
private:
Node <Type> m_Node;
public:
LinkedList():m_Node(){}
void Show_m_Node();
Node <Type> Get_m_Node();
};
template <class Type>
void LinkedList<Type>::Show_m_Node()
{
Type a=m_Node.Get_m_Data();
cout << a << endl;
}
template <class T>
Node <T> LinkedList <T>::Get_m_Node()
{
return m_Node;
}
//////////////////
///main.cpp
#include <iostream>
#include <stdlib.h>
#include "template.h"
int main(int argc, char *argv[])
{
LinkedList <int> a;
a.Get_m_Node().Set_m_Data(1120);
a.Show_m_Node();
system(" AUSE");
return 0;
}
执行结果异常郁闷:--本以为m_Data会等于1120----但是结果却等于0!
Dev-C++和VC6下均相同~~
|
-
|