我目前正在为FreeCell实现实例化一堆栈卡。每个Array,Stack和Card类都由我创建,Stack和Array类都是模板化的。C++调用嵌套模板实例中的非默认构造函数
Array<StackRA<Card>> * hometemp = new Array<StackRA<Card>>(4);
运行此代码时,它实例大小为4的数组,如预期,但呼吁栈,这是我需要实例大小13
我尝试了默认的构造函数以下:
Array<StackRA<Card>> * hometemp = new Array<StackRA<Card>(13)>(4)
Array<StackRA<Card>> * hometemp = new Array<StackRA<Card>13>(4)
堆栈的默认构造函数如下:
template <typename T>
StackRA<T>::StackRA() : m_stack()
{
size = 0;
}
还有,我想打电话给
template <typename T>
StackRA<T>::StackRA(int data) : m_stack(data)
{
size = data;
}
我已经尽我在谷歌的运气,但它一直引导我对资源的模板类模板内的1个参数的构造函数。任何想法都表示赞赏。
编辑:步进到我的程序导致Array构造
template<class T>
Array<T>::Array(int length, int start_index)
{
if (length < 0)
{
cout << "Length cannot be negative, length has been defaulted to 0\n";
m_length = 0;
}
else
{
m_length = length;
m_start_index = start_index;
m_array = new T[length];
}
}
的问题,更具体地说,是, “m_array =新T [长度];”调用StackRA的默认构造函数。问题依然存在,如何调用非默认构造函数。在实例化的地方,我会放置我想传入的大小数据吗?
EDIT2:我已经解决了这个问题,使用该种具体实施:
template <typename T>
StackRA<T>::StackRA() : m_stack()
{
size = 13;
}
最后你必须表示'Array> hometemp(4,StackRA (13));' –
iavr
@iavr是的,这是一个错误。感谢您指出。 :) – 0x499602D2