关于模板的问题。VC支持成员函数模板化么?如何支持?急,在线等待
VC支持成员函数模板化么?
如果支持,我该怎样使用?
如不支持,我有什么办法可以表示出这种意义?
我不能在类定义时,把该类型TMember作为类的模板,因为我的Update成员函数要由对象调用时的参数来决定,而不能由类生成对象时决定。
我是不是不能把Update作为类的成员?
以下是源代码,望高手指点
所有的注释都是把TMember不作为类的模板而加上的,如果去掉,可以编译通过,但不能实现我的意愿。
//.h file
#if !defined(__MANIPULATE_H__)
#define __MANIPULATE_H__
#pragma once
#include <set>
using namespace std;
#include "Observer.h"
#include "Notify.h"
using namespace System::Baby;
namespace System
{
namespace Baby
{
template<typename T/*, typename TMember*/>
class Manipulate
{
public:
Manipulate(void);
~Manipulate(void);
void Insert(const set<T> parent, const T child);
void Remove(set<T> parent, T child);
template<typename TMember>
void Update(TMember T::* pMember, const TMember newMemberValue);
};
}
}
#endif
//.cpp file
#include "Manipulate.h"
using namespace System::Baby;
template<typename T/*, typename TMember*/>
Manipulate<T/*, TMember*/>::Manipulate(void)
{
}
template<typename T/*, typename TMember*/>
Manipulate<T/*, TMember*/>::~Manipulate(void)
{
}
template<typename T/*, typename TMember*/>
void Manipulate<T/*, TMember*/>::Insert(const set<T> parent, const T child)
{
parent.insert(child);
}
template<typename T/*, typename TMember*/>
void Manipulate<T/*, TMember*/>::Remove(set<T> parent, T child)
{
parent.remove(child);
}
//不清楚这里怎么写:(,如果这样写的话,TMember不会知道是一种类型呀
template<typename T/*, typename TMember*/>
void Manipulate<T/*, TMember*/>::Update(TMember T::*pMember, const TMember newMemberValue)
{
*pMember=newMemberValue;
}