首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如果让模板类本身返回模板成员解决思路

2012-02-07 
如果让模板类本身返回模板成员如template typenameT,typenameT2classCTest{public:TpCTest(T&t){pT}

如果让模板类本身返回模板成员

template <typename   T,   typename   T2>
class   CTest
{
public:
T   p;
CTest(T   &   t){p   =   T;};
.........
};

使用时CTest <CString,   CString>   m_testString( "hello   world ");


问题:如何让   m_testString本身就象一个CString那样,   不需要再去访问成员p;

比如
m_strString.Left(....)       //   Left是CString的函数

[解决办法]
m_strString.Left(....)这样是有点困难,
不过
m_strString-> Left(....)这样的话就好说多了
CTest 重载operator-> 返回一个p的指针.
[解决办法]
template <CString, CString>
class CTest
{
public:
CString p;
CTest( CString & t){p = t;};
Left(....) { p.Left() }
.........
};

特化就行了

[解决办法]

template <typename T>
class CTest
{
public:
T p;
CTest(const char* t):p(t){};
T* operator-> ()
{
return (&p);
}
};
int main(int,char*[])
{
CTest <std::string> xxx( "aaaaaaa " );
cout < < xxx-> length() ;

return 0;
}

[解决办法]
正因为多人协作,所以才更应该改动调用方式。
如果偷懒点,可以考虑CTest才CString派生,不过因为CString设计的时候恐怕没有考虑要被派生,所以只是勉强可用。

热点排行