这段代码中有什么错误?
template <typename T>
class Sample
{
public:
T first;
T second;
typedef T Type;
};
and
template <typename Item>
class Process
{
public:
void process (Item *item)
{
typename Item::Type var = item->first + item->second;
//Some code...
}
};方法"process“应该能够处理同时分配了"static”和“dynamic”的对象。...The优先选项有效
int main(int argc, _TCHAR* argv[])
{
Sample <double> s;
Process <Sample <double> > a;
a.process(&s);
return 0;
}但第二个不是
int main(int argc, _TCHAR* argv[])
{
Sample <double> *s = new Sample <double>();
Process <Sample <double> *> a;
a.process(s); //Error C2664: 'Process<Item>::process' : cannot convert parameter 1 from 'Sample<T> *' to 'Sample<T> *'
return 0;
}如何设计一个类和方法“进程”,以便能够处理分配了“静态”和“动态”的对象?谢谢你的帮助。
发布于 2011-04-03 03:11:56
Process <Item>::process()需要一个Item*,所以Process <Sample <double> *>::process()需要一个Sample <double>**。
然而,解决方案要简单得多:
Sample <double> *s = new Sample <double>();
Process <Sample <double> > a;
a.process(s);对于Process来说,对象是如何分配的一点都不重要,它得到的只是一个指向它的指针并使用它(假设它不会保持所有权或试图删除该对象)。
https://stackoverflow.com/questions/5525262
复制相似问题