读书人

关于c++模板成员的有关问题

发布时间: 2012-05-09 12:13:59 作者: rapoo

关于c++模板成员的问题
我写了如下的一段代码:

C/C++ code
#include <iostream>#include <typeinfo>#include <string>template<typename T> class A{public:    A(int i = 0):value(i){}    int get_value(){return value;}private:    int value;    template<typename Type> struct B;    B<T> *bptr;};template<typename T> template<typename Type> struct A<T>::B{    B():str("hello world"){}    void set_str(const char * s);     const B *return_B();private:    std::string str;};template<typename T>  template <typename Type>void A<T>::B<Type>::set_str(const char * s){    str = s;}/**/template<typename Type>  template <typename T> const A<Type>::B<T>  *A<Type>::B<T>::return_B()//如果把const拿到*前面就可以编译通过{    return new B();}const int fun(){    return 4;}int main(){    return 0;}

这个在gcc下不可以编译通过,但是把那个函数定义出的const拿到*前面就可以了,不知道是怎么回事。因为这一点都搞了一个上午了,也没有搞清楚是为什么,还有就是改正之后再gcc下编译通过,在vs2010下也不能编译通过,求各位高手能不理赐教,不胜感激。

[解决办法]
const夹在中间,gcc无法识别B是template, 猜测原因可能如此。 蛇穿了马甲,gcc不认了。

读书人网 >C++

热点推荐