SORU
12 Kasım 2009, PERŞEMBE


Bölme sınıflara C şablon oluşturdu .dosyaları mümkün hpp/.cpp ?

Hatalar .hpp .cpp dosya arasında bölünmüş C sınıf bir şablon derlemeye çalışıyorum alıyorum:

$ g   -c -o main.o main.cpp  
$ g   -c -o stack.o stack.cpp   
$ g   -o main main.o stack.o  
main.o: In function `main':  
main.cpp:(.text 0xe): undefined reference to 'stack<int>::stack()'  
main.cpp:(.text 0x1c): undefined reference to 'stack<int>::~stack()'  
collect2: ld returned 1 exit status  
make: *** [program] Error 1  

İşte benim kod:

yığın.hes:

#ifndef _STACK_HPP
#define _STACK_HPP

template <typename Type>
class stack {
    public:
            stack();
            ~stack();
};
#endif

stack.cpp:

#include <iostream>
#include "stack.hpp"

template <typename Type> stack<Type>::stack() {
        std::cerr << "Hello, stack " << this << "!" << std::endl;
}

template <typename Type> stack<Type>::~stack() {
        std::cerr << "Goodbye, stack " << this << "." << std::endl;
}

main.cpp:

#include "stack.hpp"

int main() {
    stack<int> s;

    return 0;
}

ld elbette doğrudur: simgeler stack.o. değil

this question cevabı zaten yazıyor gibi yapıyorum yardım etmez.
This one yardımcı olabilir, ama .hpp dosyası içine her yöntem hareket-etmek istemiyorum, gerek yok, ben mi söyleyeyim?

Tek mantıklı çözüm .hpp dosya .cpp dosyasındaki her şeyi taşımak, ve sadece her şeyi dahil etmek yerine, bağımsız bir nesne dosyası olarak link? Bu gibi görünüyorçokçirkin! Bu durumda, benim önceki durumuna döner ve stack.hpp stack.cpp yeniden adlandırın ve onunla yapılabilir.

CEVAP
12 Kasım 2009, PERŞEMBE


mümkün ihtiyacımız olacak ne biliyorsun sürece.

Stack.cpp sonunda aşağıdaki kodu ekleyin ve bu iş olacak :

template class stack<int>;

Yığın olmayan şablon tüm yöntemler oluşturulacak ve adım bağlama iyi çalışır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elly Awesome

    Elly Awesome

    15 ŞUBAT 2010
  • pissengehen

    pissengehen

    26 EYLÜL 2006
  • SavageLuxxxGaming - Daily NBA 2K15 & NBA Live 15 Enjoy And Subscribe!

    SavageLuxxxG

    11 Ocak 2013