2015-02-09 70 views
0

我是新的C++模板。模板专门化并没有做我需要的东西

我有一个模板struct AAA,它有一个名为field的字段。当有人用int调用它像AAA<int>时,我想要增加一个名为second_field的字段。有人能告诉我如何解决这个代码?

template<typename T> 
struct AAA 
{ 
    T field; 
}; 

template<typename T=int> 
struct AAA<int> 
{ 
    int second_field; 
}; 

int main() 
{ 
    AAA<double> ad; 
    ad.field=3.14; 

    AAA<int> ai; 
    ai.second_field=5; 

    return 0; 
} 

回答

4

两件事情:

1)专业化符号是template<>,不template<typename T=int>

2)专门类型是而不是与非专业类型相关。这里没有继承。 second_field只有字段。

把这个在一起,你需要

template<> 
struct AAA<int> 
{ 
    int field; 
    int second_field; 
}; 
0

对于所谓的模板专业化的语法比在你的代码有点不同:

template<> 
struct AAA<int> 
{ 
    int second_field; 
};