Sablonova trida – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Sablonova trida – C / C++ – Fórum – Programujte.comSablonova trida – C / C++ – Fórum – Programujte.com

 

Hertas0
Duch
13. 11. 2014   #1
-
0
-

Zdravím,

 mám třídu:

template< typename Real, typename Device = Host, typename Index = int >
class COOMatrix : public SparseMatrix < Real, Device, Index >


a v ni nějaké metody a proměnné, to není důležité myslím

v mainu volám  

typedef COOMatrix< float, Host, int > COOMatrixType;
COOMatrixType COOMatrix;

a to vyvolává následující chybu při překladu:

/home/libor/lib/tests/benchmarks/spmv.h: In instantiation of ‘bool setupBenchmark(const tnlParameterContainer&) [with Real = float]’:
/home/libor/lib/tests/benchmarks/benchmark-spmv.h:706:49:   required from here
/home/libor/lib/tests/benchmarks/benchmark-spmv.h:670:21: error: cannot declare variable ‘COOMatrix’ to be of abstract type ‘COOMatrix<float, tnlHost, int>’
       COOMatrixType COOMatrix;
                                  ^

problém je v tom, že pro jinou třídu, která je velmi podobná této a je stejně děděná, mi tato chyba nenastane

se šablonami jsem zatím moc nedělal a proto moc netuším jak chybu opravit, pokud by někoho z vás napadlo v čem by mohla být zrada, byl bych moc vděčný za radu :)

Nahlásit jako SPAM
IP: 147.32.126.–
KIIV
~ Moderátor
+43
God of flame
13. 11. 2014   #2
-
0
-

#1 Hertas
"abstract type" znamena, ze dedena trida je ciste virtualni - ma nadefinovan nejaky interface a nektere metody musi byt definovany v potomkovi, aby se stal typem konkretnim.

class abstract {
  public:
    virtual bool neco() = 0;  // bez nadefinovani v potomkovi je i potomek je ciste virtualni a neda se z nej dedit
};

class potomek: public abstract {
  public:
    virtual bool neco() { return true; } // ted to uz pujde
}

na templatech to nezalezi - pozadovany interface musi presne odpovidat

Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Hertas
~ Anonymní uživatel
2 příspěvky
13. 11. 2014   #3
-
0
-

#2 KIIV

díky moc

Nahlásit jako SPAM
IP: 147.32.126.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 48 hostů

Podobná vlákna

2x trida — založil Roman

Třída OOP — založil Tomáš Havlíček

Virtuální třída — založil Damian

Univerzální třída — založil BDS

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý