【发布时间】:2013-05-17 19:27:42
【问题描述】:
我对模板和重载的使用不是很熟悉,我被要求纠正一个代码作为练习。我纠正了我能识别的所有内容,但我不确定我忽略了什么。如果变量名称对您来说听起来很糟糕,我深表歉意,它们都带有原始损坏的代码。
部分错误信息是
CSL.cpp:在成员函数'void CSL::showList() [with T = int]'中:
CSL.cpp:106:从这里实例化 CSL.cpp:26:错误:下标 value 既不是数组也不是指针
代码本身:
template<class T>
CSL<T>::CSL(T *d, int s) : data(*d), size(s)
{
}
template<class T>
void CSL<T>::showList() //Function with problem.
{
cout<<"Comma separated list:"<<endl;
for(int x = 0; x < size; ++x)
{
cout << data[x];
if(x != size + 1)
cout << ": ";
}
cout << endl << endl;
}
int main()
{
someCustomers[0].setCustomer("Zaps", 23.55);
//...
someCustomers[5].setCustomer("Curtin",56999.19);
CSL_Size = sizeof(someInts)/sizeof(someInts[0]);
CSL<int> CSL_Integers(someInts, CSL_Size);
//...
CSL_Size = sizeof(someCustomers)/sizeof(someCustomers[0]);
CSL<Customer> CSL_Customers(someCustomers, CSL_Size);
CSL_Integers.showList(); //Problem starts here
CSL_Doubles.showList();
CSL_Videos.showList();
CSL_Customers.showList();
return 0;
}
【问题讨论】:
-
如果你去掉了不必要的冗余代码来展示有问题的行为,也许。
-
-1 用于发布代码墙,而不是简化问题的简单说明。如果你不这样做,这意味着我们需要做更多的工作。如果您这样做,我们的工作量会减少,而您的工作量会更大。既然是你的问题,你需要承担大部分的努力。
-
哎哟。我马上修代码。
-
@DavidHeffernan 我真的很感激你让我知道,而不是其他人只是在没有解决我的错误的情况下进行标记。再次感谢您
-
已删除不赞成票,感谢您这么好的建议。
标签: c++ templates overloading