Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z Szablonem Link2019 C++

Ostatnio zmodyfikowano 2018-01-27 15:06
Autor Wiadomość
Wuwus1
Temat założony przez niniejszego użytkownika
Problem z Szablonem Link2019 C++
» 2018-01-27 14:57:09
Jestem w trakcie pisania lodera obiektów do mojej gry. Zgodnie z książką, którą kupiłem stworzyłem klasę szablonową. Jednak gdy próbuje użyć którejś funkcji (nawet konstruktor i destruktor) to dostaje błąd LINK2019. Oto kod którego używam.

Plik ResourceLoader.h
C/C++
#ifndef RESOURCELOADER_H_
#define RESOURCELOADER_H_

#include <map>
#include <SFML\Graphics.hpp>
#include <memory>
#include <iostream>
#include <assert.h>

namespace Textures
{
    enum ID
    {
        Player,
        Sword,
        Desert,
        Toilet,
        Metro,
        Illusive,
        UnderWater
    };
}

template < typename Resource, typename Identifier >
class ResourceHolder
{
public:
    ResourceHolder();
    ~ResourceHolder();
   
    void load( Identifier id, const std::string & filepath );
private:
    std::map < Identifier, std::unique_ptr < Resource >> ResourceMap;
};
#endif // !RESOURCELOADER_H_

Plik ResourceLoader.cpp
C/C++
template < typename Resoucre, typename Identifier >
ResourceHolder < Resoucre, Identifier >::ResourceHolder()
{
   
}

template < typename Resoucre, typename Identifier >
ResourceHolder < Resoucre, Identifier >::~ResourceHolder()
{
   
}

template < typename Resource, typename Identifier >
void ResourceHolder < Resource, Identifier >::load( Identifier id, const std::string & filepath )
{
    std::unique_ptr < Resource > resource( new Resource() );
    if( !resource->LoadFromFile( filepath ) )
         std::cout << "Loda from file error file: " << filepath << " is broken\n";
   
    auto inserted = ResourceMap.insert( std::make_pair( id, std::move( resource ) ) );
    assert( inserted.second );
}

plik main.cpp (wycinek)
C/C++
ResourceHolder < sf::Texture, Textures::ID > rh;
rh.load( Textures::ID::Metro, "Textures\Maps\Metro.png" );

Szukałem pomocy w internecie ale po 3 godzinach prób naprawienia już sam nie wiem co zrobić.
P-169040
pekfos
» 2018-01-27 15:00:06
Szablony się implementuje w pliku nagłówkowym.
P-169041
Wuwus1
Temat założony przez niniejszego użytkownika
» 2018-01-27 15:06:24
Dzięki za przypomnienie. Właśnie zajrzałem do książki i zacząłem się zastanawiać czemu wszystkie metody są w pliku nagłówkowym. Jeszcze raz dzięki za przypomnienie :).
P-169042
« 1 »
  Strona 1 z 1