Har följande kod som fungerar, allt deklarerat i en fil, "simple_test.cpp" enligt följande:
(notera att jag kommenterat ut #include "simple.h" eftersom jag kör allt från denna fil)
Jag får bara inte rätt på det när jag vill lägga definitionen i en header-fil och deklarationen i en annan fil.
Såhär såg min header-fil, "simple.h" ut:
och min deklarationsfil, "simple.ccp" såg ut så här:
Jag får följande felmeddelande:
/usr/bin/ld: simple_test.cpp: (.text+0x6e): undefined reference to `Simple::getVals()'
(notera att jag kommenterat ut #include "simple.h" eftersom jag kör allt från denna fil)
Kod:
#include <iostream> #include <vector> // #include "simple.h" using std::cout; using std::endl; using std::vector; class Simple { public: Simple() = default; Simple(int aa) :a(aa) {} Simple(int aa, int bb) :a(aa), b(bb) {} Simple(int aa, int bb, int cc) :a(aa), b(bb), c(cc) {} std::vector<int> getVals(){ std::vector<int> vals{}; vals.push_back(a); vals.push_back(b); vals.push_back(c); return vals; }; private: int a {-1}; int b {-1}; int c {-1}; }; int main(){ Simple simpX = Simple(); Simple simpC = Simple(1,2,3); std::vector<int> valsX = simpX.getVals(); std::vector<int> valsC = simpC.getVals(); cout << "x1: " << valsX[1] << " "; cout << " x2: " << valsX[0] << " "; cout << " x3: " << valsX[2] << " " << endl; cout << "c1: " << valsC[0] << " "; cout << " c2: " << valsC[1] << " "; cout << " c3: " << valsC[2] << " " << endl; return 0; }
Jag får bara inte rätt på det när jag vill lägga definitionen i en header-fil och deklarationen i en annan fil.
Såhär såg min header-fil, "simple.h" ut:
Kod:
#include <string> #include <vector> class Simple { public: Simple() = default; Simple(int aa) :a(aa) {} Simple(int aa, int bb) :a(aa), b(bb) {} Simple(int aa, int bb, int cc) :a(aa), b(bb), c(cc) {} std::vector<int> getVals(const int& val) const; private: int a {-1}; int b {-1}; int c {-1}; };
och min deklarationsfil, "simple.ccp" såg ut så här:
Kod:
#include <string> #include <vector> #include "simple.h" using std::string; using std::vector; Simple::Simple { std::vector<int> Simple::getVals(){ std::vector<int> vals{}; vals.push_back(a); vals.push_back(b); vals.push_back(c); return vals; } }
Jag får följande felmeddelande:
/usr/bin/ld: simple_test.cpp: (.text+0x6e): undefined reference to `Simple::getVals()'