I am learning c++ by writing commons data structures and I have a compiler warning that my inlined add method is not defined.
src/vector.h:10:14: warning: inline function 'Vector::add' is not defined [-Wundefined-inline] inline void add(const float val); What am I doing wrong? As far as I can tell the methods match up. However if I remove the inline method, it works fine but the first invocation of add takes 11380us but the 2nd and 3rd are around 3667us -nearly 4x penalty cost.
src/vector.h
//#include <cstddef> class Vector { public: explicit Vector(const int n); explicit Vector(const int n, const float val); float& operator[](const int i); inline int const length(); inline void fill(const float val); inline void add(const float val); inline float sum(); private: float* arr; int len; }; src.vector.cpp
#include "vector.h" #include <iostream> #include <algorithm> #include "yepCore.h" #include "yepMath.h" #include "yepLibrary.h" #include <cstdlib> using namespace std; inline void Vector::add(const float val) { chrono::steady_clock::time_point start = chrono::steady_clock::now(); for (int i = 0; i < len; ++i) { arr[i] += val; } chrono::steady_clock::time_point end = chrono::steady_clock::now(); cout << "yepp add took " << chrono::duration_cast<chrono::microseconds>(end - start).count() << "us.\n"; } /** template <> void Vector<float>::add(const float val) { chrono::steady_clock::time_point start = chrono::steady_clock::now(); yepCore_Add_V32fS32f_V32f(arr, val, arr, len); chrono::steady_clock::time_point end = chrono::steady_clock::now(); cout << "yepp add took " << chrono::duration_cast<chrono::microseconds>(end - start).count() << "us.\n"; } ...