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:
I file sono: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
- 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
- main.cppcodice:#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 } }
Dove sbaglio?codice:#include "test.hpp" int main() { Asd::A<int> test {7.76}; return 0; }
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

Rispondi quotando