acro-traditional
  • 0

C++クラスのテスト

  • 0

仮想クラスの実装中にエラーが発生しました。
これがコードです。
解決策はありますか?

#include "DblArray.h"
namespace sdds {
   void DblArray::allocate(int size) {
      delete[] m_data;
      if (size < 1) size = 1;
      m_data = new double[size];
      m_size = size;
   }
   DblArray::DblArray(int size) {
      allocate(size);
   }
   DblArray::~DblArray() {
      delete[] m_data;
   }
   DblArray::DblArray(const DblArray& cp){ 
      operator=(cp);

   }
   DblArray& DblArray::operator=(const DblArray& cp) {
      if (this != &cp) {
         delete[] m_data;                     
         m_data = new double[cp.m_size];
         for (int i = 0; i < cp.m_size; i++) {
            m_data[i] = cp.m_data[i];
         }
         m_size = cp.m_size;
      }
      return *this;
   }

   double& DblArray::element(int indexOfelement) {
      if (indexOfelement < 0) indexOfelement = 0;
      return m_data[indexOfelement % m_size]; 
   }

   double& DblArray::operator[](int indexOfElement) {
      return element(indexOfElement);
   }

   int DblArray::size() const {
      return m_size;
   }

}

 

共有
  1. #include <iostream>
    #include "Array.h"
    #include "DynArray.h"
    using namespace std;
    using namespace sdds;
    
    
    template <typename T>
    void prnArray(T& array) {
       for (int i = 0; i < array.size() ; i++) {
          if (i != 0) cout << ',';
          cout << array[i];
       }
       cout << endl;
    }
    
    int main() {
       int i;
       Array<int> A(3);
       Array<double> D(4);
       DynArray<double> DA(5);
    
       for (i = 0; i < 3; i++) {
          A[i] = i + 10;
       }
       for (i = 0; i < 4; i++) {
          D[i] = i + 10.2;
       }
    
       prnArray(A);
       prnArray(D);
    
       for (i = 0; i < 7; i++) {
          DA[i] = i + 10.2;
       }
    
       prnArray(DA);
    
       return 0;
    }

     

    これが解決策です。

    • 0
Leave an answer

Leave an answer

ブラウズ