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()'