在我理解的所有语言中,这是不可能的,但有人告诉我可以在C++中使用,但我很难相信它。基本上,当你参与一个类,你正在编译阶段创建一个独特的类,不是吗?在C++中,您可以在子类中使用不同的参数值来扩展参数化的基类吗?
让我知道如果我不清楚我的问题。
这是我在地名释义什么,我试图做(要注意L类)的尝试:
//; g++ ModifingBaseClassParameter.cpp -o ModifingBaseClassParameter;ModifingBaseClassParameter
#include <iostream>
using namespace std;
template<typename T>
class Base
{
public:
Base() {}
Base(T& t) : m_t(t) {}
T& getMem() {return m_t;}
private:
T m_t;
};
template<typename T>
class F: Base<T>
{};
template<typename T>
class L: F<long>
{};
int main()
{
Base<int> i;
F<float> f;
L<long> l;
cout<<i.getMem()<<endl;
// cout<<f.getMem()<<endl; // why doesn't this work
// cout<<l.getMem()<<endl; // why doesn't this work
}
因此,大家可以看到(希望我的语法是有道理的),L类是试图重新定义其父母的浮动参数很长。这似乎并不合法,但我会对专家有所不同。
发布一些代码,说明你在问什么。 – 2010-01-05 21:43:49
我认为你需要澄清你的问题。 – 2010-01-05 21:45:50
您问关于foo类然后制作一个类吧:public foo <4>? –
wheaties
2010-01-05 21:47:33