类模板里面的问题

ww51xh 2004-12-27 12:03:48
template<class Type>
class MyClass:
{
template<class T>
void DoSomething(T t);

};

DoSomething该怎么来定义啊??
请教。。。
...全文
95 点赞 收藏 11
写回复
11 条回复
ilovevc 2004年12月27日
vc6可以将模板成员函数直接定义在class内。
回复 点赞
ilovevc 2004年12月27日
template<class Type>
template<class T>
void MyClass<Type>::DoSomething(T t)
{

}

应该是如此。不过vc6就别指望了。
回复 点赞
sonic1984 2004年12月27日
我想楼主的意思是问 模版类中的模版函数该怎么在外部定义吧

好像要用作用域解析符::
回复 点赞
blueskyzsz 2004年12月27日
晕,格式咋变了,呵呵
回复 点赞
sonic1984 2004年12月27日
你用内联定义吧
回复 点赞
blueskyzsz 2004年12月27日
// 简单写了一下 ^_^

#include <iostream>
#include <string>
using namespace std;

template<class T>
class MyClass
{
public:
MyClass() : m_argumT()
{
}
MyClass(T argumT)
{
m_argumT = argumT;
}

void DoSomething(T argumT1)
{
cout << "argumT: " << m_argumT << endl;
cout << "argumT1: " << argumT1 << endl;
}

protected:
T m_argumT;
};

void main()
{
MyClass<int> testInt(30);
MyClass<char> testCh('d');
MyClass<string> testStr("test");

testInt.DoSomething(50);
testCh.DoSomething('m');
testStr.DoSomething("hello world");
}
回复 点赞
fallhunter 2004年12月27日

呵呵
回复 点赞
beyondtkl 2004年12月27日
ni yao 做什麼??
回复 点赞
ww51xh 2004年12月27日
谢谢各位了,俺知道了
结贴了
回复 点赞
blueskyzsz 2004年12月27日
带有模板类型的模板函数vc6只能放在头文件中定义,因为以前的编译器很难定位模板类里模板函数的位置
,所以只能在头文件中定义。如果不带的话没问题.
c++里面有一个新的关键字export 用这个关键字可以把模板函数放到cpp里面,
不过我不清楚那个编译器现在支持,vc6一定不支持的
这么写是可以地^_^

template<class T>
class MyClass
{
public:
MyClass() : m_argumT()
{
}
MyClass(T argumT)
{
m_argumT = argumT;
}

template<class OtherT>
void DoSomething(OtherT argumT1)
{
cout << "argumT: " << m_argumT << endl;
cout << "argumT1: " << argumT1 << endl;
}

protected:
T m_argumT;
};
回复 点赞
ww51xh 2004年12月27日
to sonic1984() :
对啊,就是模板里面的模板函数应该怎么定义。
谁能给一个例子。。
回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告