文件目录
.
├── CMakeLists.txt
├── include
│ └── Operation.h
├── main.cc
└── src
├── CMakeLists.txt
└── Operation.cc
./CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(name)
include_directories(include)
add_subdirectory(src)
add_executable(main main.cc)
target_link_libraries(main op)
./include/Operation.h
#pragma once
class Operator{
public:
int m_a;
template<typename T>
T math(T a);
};
./src/Operation.cc
#include "Operation.h"
#include <iostream>
using namespace std;
template<typename T>
T Operator::math(T a){
return a+2;
};
template int Operator::math(int); // 不加这一行将提示:main.cc:(.text+0x36): undefined reference to `int Operator::math<int>(int)'
./main.cc
#include "Operation.h"
#include <iostream>
using namespace std;
int main(){
int a = 3,b = 5;
Operator o;
cout<<o.math(b);
}
./CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(name)
include_directories(include)
add_subdirectory(src)
add_executable(main main.cc)
target_link_libraries(main op)