ten sam kod zdefiniowany w wielu jendostkach transakcji

0

Witam.

Jak to jest, że linker nie radzi sobie gdy funkcja, która nie jest inline jest zdefiniowna (jej ciało) w kilku plikach nagłówkowych dołączanych w kilku plikach cpp (jednostkach translacji) a jednocześnie nie ma problemu gdy to metody jakiejś klasy w całośći zdefiniowana w pliku h? Oczywiście mam na myśli definicje w miejscu np public: Klasa() {//kod konstruktora}

BTW (da się pobrać wskaźnik do funkcji inline?)

1

Tak jest to zdefiniowane w standardzie (patrz na One Definition Rule) - funkcje (a niedługo i zmienne) oznaczone inline mogą mieć wiele definicji, w różnych TU, tak długo jak one wszystkie są identyczne. W przeciwnym wypadku masz UB, no diagnostic required.

Jeśli chodzi o funkcje zdefiniowane w definicji klasy - są one zawsze niejawnie inline.

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