Problem z plikami .cpp i .h

0

Pomóżcie mi proszę bo zaraz oszaleje :/// . Pisze sobie własny kontener listę i chce zaincludować plik .cpp w pliku .h pod deklaracja klasy listy, ale jeżeli tak robię to pomimo używania własnego namespace nic mi nie łapie w pliku zrodlowym. O co w tym może chodzić ?

Mniej więcej podgląd kodu...
plik.h

#pragma once

namespace custom{
template <class t>
struct wezel{
...
}
template <class t>
class lista{
lista();
...
}
}
#include "plik.cpp"

plik.cpp

custom::lista<t>::lista(){
...
}
...
1

Przy każdej szablonowej definicji musisz poinformować kompilator, że ma do czynienia z szablonem. Ponadto definiowanie funkcji szablonowych w pliku cpp mija się z celem, skoro i tak muszą być załączone w nagłówku (ale to nie jest twardy zarzut, wiele osób tak robi, choć ja wolę nagłówek z deklaracjami + nagłówek z definicjami)

0
kq napisał(a):

Przy każdej szablonowej definicji musisz poinformować kompilator, że ma do czynienia z szablonem. Ponadto definiowanie funkcji szablonowych w pliku cpp mija się z celem, skoro i tak muszą być załączone w nagłówku (ale to nie jest twardy zarzut, wiele osób tak robi, choć ja wolę nagłówek z deklaracjami + nagłówek z definicjami)

template <class t>
custom::lista<t>::lista(){
...
}
...

Źle przepisałem kod, przed każdą definicją funkcji mam template <class t="t">, więc to nie o to chodzi :(

0

Jak to kompilujesz? Jak używasz tej listy?

0

#include "plik.cpp" czy coś w tej linijce nie wygląda dziwnie?
I to na dodatek znajduje się w pliku nagłówkowym.

0

W pewnym sensie, kompilatora nie obchodzi czym jest plik nagłówkowy, a czym plik źródłowy. Jeśli robisz #include "plik.cpp" to będzie on w takich warunkach potraktowany jak plik nagłówkowy, co może nie być zgodne z tym co chcesz.

0

@enedil: Tak, ale w tym wypadku, jeśli projekt jest zrobiony normalnie (proces budowania jest standardowy), ten include spowoduje błąd redefinicji symboli.

Samo pytanie jest źle zadane.
Jeśli jest błąd kompilacji/linkowania to, pytanie powinno zawierać treść błędu (tylko nie screenshot). Wtedy będzie pewne, czy moje spostrzeżenie jest trafne czy nie.
Jeśli nie jest trafne, to będzie można ustalić co jest źle.

0
MarekR22 napisał(a):

@enedil: Tak, ale w tym wypadku, jeśli projekt jest zrobiony normalnie (proces budowania jest standardowy), ten include spowoduje błąd redefinicji symboli.

Jeżeli to jedyne pliki w projekcie to będzie się kompilował jedynie plik .cpp. Bez dołączenia pliku nagłówkowego posypią się błędy.
I chyba na to wskazują opisy z pierwszego postu. Jak na razie pytania naprowadzające zostały zignorowane przez OP.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0