首页 > 解决方案 > 诊断未定义参考错误的来源

问题描述

我的代码在这里遇到了一点问题——我的 Replit C++ 代码一直抱怨对 inarray::intarray(int) 的未定义引用,可能是“intarray d(432);”行,但我发誓我已经在我的 intarray.h 和 intarray.cpp 文件。知道是什么问题吗?代码如下,在此先感谢。这是驱动程序文件:

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

这是cpp文件

#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];
  }
}

这是头文件:

#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

标签: c++undefined-reference

解决方案


推荐阅读