0

Got a bit of an issue with my code here - my Replit C++ code keeps complaining about an undefined reference to inarray::intarray(int), probably the line "intarray d(432); but I swear I've already defined it in my intarray.h and intarray.cpp files. Any idea whats the issue? Code's below, and thanks in advance. Here's the driver file:

#include <iostream>
#include "intarray.h"
using std::cout;
using std::endl;
using std::cin;
int main(){
  intarray d(432);
}

Here's the cpp file

#include <iostream>
#include <array>
#include <math.h>
#include <utility>
#include <initializer_list>
#include "intarray.h"
using std::cout;
using std::endl;
using std::string;
using std::array;
using std::ceil;
template <class T>
intarray<T>::intarray(T inp){
  int digitcount=1;
  if (typeid(T) == typeid(int)){
    intptr =new int[digitcount]{inp};
  }
  if (typeid(T) == typeid(string)){
    digitcount=ceil(inp.length()/19);
    cout << digitcount<<endl;
    intptr =new int[digitcount];
  }
}
template <class T>
void intarray<T>::printdigits(){
  /*for (const auto& i: digits){
      cout << i;
  }*/
  for (int i=0;i<arraysize;i++){
    cout<<intptr[i];
  }
}

And here's the header file:

#include <iostream>
#include <array>
using std::cout;
using std::endl;
using std::string;
using std::array;
//using std::array;
#include <utility>
#include <initializer_list>
#ifndef intarray_h
#define intarray_h
template <class T>
class intarray{
  private: 
    int arraysize=1;
    int *intptr;
  public:
    intarray()=default;
    intarray(T inp);
    void printdigits();
    int getSize(){return arraysize;};
};
#endif
rawrex
  • 3,929
  • 2
  • 7
  • 22

0 Answers0