1

私はテンプレートとオーバーロードの使用にあまり慣れていないため、練習問題としてコードを修正するように依頼されました。なんとか特定できたものはすべて修正しましたが、何を見落としていたのかわかりません。変数名が悪く聞こえる場合は申し訳ありませんが、それらはすべて元の壊れたコードに付属しています。

エラーメッセージの一部は

CSL.cpp: メンバー関数 'void CSL::showList() [with T = int]':

CSL.cpp:106: ここからインスタンス化されました CSL.cpp:26: エラー: 添字付きの値は配列でもポインタでもありません

コード自体:

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;
}
4

1 に答える 1