Sto cercando di migliorare le mie conoscenze sul C++ e sto provando a non usare più un IDE nel quale selezionavo semplicemente "aggiungi file al progetto" e usare la riga da comando per compilare i file ma ritrovo un errore:
codice:
tomas@tomas-tobefilledbyoem:~/Desktop/Projects/test$ g++ test.cpp main.cpp -Wall -Wextra -pedantic-errors -std=c++2a
/usr/bin/ld: /tmp/ccxpdImr.o: in function `main':
main.cpp:(.text+0x2d): undefined reference to `Asd::A<int>::A(float)'
collect2: error: ld returned 1 exit status
I file sono:
- test.hpp
codice:
#include <iostream>
#ifndef TEST_HPP
#define TEST_HPP
namespace Asd {
template <class T>
class A {
public:
A(float num);
};
}
#endif
- test.cpp
codice:
#include "test.hpp"
#include <iostream>
namespace Asd {
template <class T>
A<T>::A(float num) {
std::cout << static_cast<T>(num) << '\n'; // inserito solo per farmi compilare
}
}
- main.cpp
codice:
#include "test.hpp"
int main() {
Asd::A<int> test {7.76};
return 0;
}
Dove sbaglio?
Grazie
p.s. il problema non sta nel codice ma nella compilazione, non ho problemi se aggiungo tutto in un file o unisco test.cpp/.hpp