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

专家来看,超级难语法题解决思路

2012-02-07 
专家来看,超级难语法题如何调用模板参数类型的构造函数?template typenameTclassA{voidme(){T*aa- T::

专家来看,超级难语法题
如何调用模板参数类型的构造函数?

template <typename   T>
class   A
{         void   me()
            {  
                          T   *a;   a-> T::T();   //错误,这里调用了一个叫T的函数,而不是构造函数
              }
};

[解决办法]
这个例子说明了模版不是macro,
T::T()不会替换为MyClass::MyClass();(lz贼有想象力)

调用构造函数是编译器对下述语法的翻译的结果。
可以调用MyClass::MyClass()的方式是。

MyClass m;// = MyClass();
MyClass* p = new MyClass();
new (p) MyClass();


原因是这些语言把ctor的名字定为了和className相同的。
如果是VB, Python, Ruby,楼主就不会这么想了。

热点排行