将代码带到不同文件后编译错误

问题描述

我想知道你们中的任何人是否可以回答我目前面临的问题。

当我先将我的代码放入编译器时,而没有将一些代码放入不同的文件中,则一切正常。但是,当我开始拆解代码时,它将无法汇编。

一个文件中的代码如下:

#include<iostream>

class CObject{
    public:
      void init(void);
      template <typename T,typename... Ts>
      void init(T text,Ts... text1);
};

void CObject::init(void){
  std::cout << "No parameter left" << std::endl;
}

template <typename T,typename... Ts>
void CObject::init(T text,Ts... text1){
  std::cout << text << std::endl;
  init(text1...);
}

int main()
{
  CObject o;
  o.init("A","variable","amount","of","parameters","should","be","allowed","in","this ","function");
    return 0;
}

然后将代码放入这样的不同文件中:

main.cpp

#include "CObject.hpp"

int main()
{
  CObject o;
  o.init("A","function");
    return 0;
}

CObject.hpp

#ifndef COBJECT_HPP
#define COBJECT_HPP

class CObject{
    public:
      void init(void);
      template <typename T,Ts... text1);
};

#endif

CObject.cpp

#include<iostream>
#include "CObject.hpp"

void CObject::init(void){
  std::cout << "No parameter left" << std::endl;
}

template <typename T,Ts... text1){
  std::cout << text << std::endl;
  init(text1...);
}

在控制台中输入此命令后,

g++ *.cpp -o main.exe

编译器说:

/usr/bin/ld: /tmp/cc5aW6eZ.o: in function `main':
main.cpp:(.text+0x76): undefined reference to `void CObject::init<char const*,char const*,char const*>(char const*,char const*)'
collect2: error: ld returned 1 exit status

由于我是C ++的新手,所以我不知道这是我使用编译器的一个问题还是因为我的代码写错了而发生。

感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)