Kombinace sablony a tridy string – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kombinace sablony a tridy string – C / C++ – Fórum – Programujte.comKombinace sablony a tridy string – C / C++ – Fórum – Programujte.com

 

fnenks+1
Stálý člen
11. 12. 2011   #1
-
0
-

Zdravim,

udelal jsem si knihovnu, aby pole fungovali podobne jak treba v programu MATLAB. Tzn mam treba pole o velikosti 3x3 s nejakyma hodnotama a kdyz dosadim dalsi hodnotu treba do souradnic (4,8), tak se pole automaticky zvetsi a hodnotu dosadi. Dalsi vyhoda je, ze prvni hodnota je na souradnici (1,1) nikoliv na (0,0) takze je program prehlednejsi.

Ted ale k problemu, vytvoril jsem k tride sablonu, abych nemusel vytvorit dalsi tridy ke kazdemu datovemu typu. Problem ale nastava, kdyz dosadim do sablony tridu string.

Zde jsou zdrojove kody:
http://codepad.org/kc7FZbT3
http://codepad.org/jtFKdeAe

Pokud neinicializuji objekt ihned pri deklaraci, nastane chyba.
Pokud vlozim retezec do novych souradnic, program se ani nezkompiluje.

Budu rad za jakoukoliv radu, ale zacinam se uz trochu bat, ze to opravit ani nepujde

Nahlásit jako SPAM
IP: 88.101.84.–
vitamin+8
Grafoman
11. 12. 2011   #2
-
0
-

#1 fnenks
miesto:

       inventory(Type = 0);	//do stringu nemozes zpisat integer

pouzi 2 konstruktori.

       inventory(const Type &t);		
       inventory();				

vo funkcii operator(int, int) sa tiez snazis do stringu priradit 0. 

Na indexovanie matice nebudes potrebovat zaporne cisla, pouzi unsigned, pripadne size_t.

To ze sa skoro vsetko indexuje od 0 ale tvoje funkcie budu indexovat od 1 bude fakt prehladne :)

Nerob funkcie moc blbovzdorne, radsej napis komentar ako sa maju pouzivat.

Nahlásit jako SPAM
IP: 95.105.128.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
fnenks+1
Stálý člen
11. 12. 2011   #3
-
0
-

tak jak mam udelat ve funkci inventory::operator()(int int) udelat, aby v pripade ciselneho datoveho typu 
do pole[i][j] dosadilo nulu a v pripade retezce string dosadilo: "" ?

Nahlásit jako SPAM
IP: 88.101.84.–
vitamin+8
Grafoman
11. 12. 2011   #4
-
0
-

Mam inu otazku, preco chces vytvarat maticu stringov? :)

Nahlásit jako SPAM
IP: 95.105.128.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
yaqwsx+9
Posthunter
11. 12. 2011   #5
-
0
-

#3 fnenks
Vytvořit exlicitní funkci pro ten daný typ. Tzn. jednou budeš mít obecnou metodu definovanou jako trida<T>::metoda a explicitní trida<string>::metoda

Nahlásit jako SPAM
IP: 85.160.127.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
fnenks+1
Stálý člen
11. 12. 2011   #6
-
0
-

no potrebovat to podle me budu na hodne veci :-P

Nahlásit jako SPAM
IP: 88.101.84.–
fnenks+1
Stálý člen
11. 12. 2011   #7
-
0
-

#5 yaqwsx
diky, tohle pomohlo

#4 vitamin
diky za tipy

Nahlásit jako SPAM
IP: 88.101.84.–
ondra.holub+1
Stálý člen
11. 12. 2011   #8
-
0
-

#3 fnenks
Pokud se tam má u čísel dosadit nula a u řetězce prázdný řetězec, tak stačí použít default konstruktor templatovaného typu:

#include <iostream>
#include <string>

template<typename T>
struct X
{
    X(T value = T())
    {
        std::cout << '"' << value << "\"\n";
    }
};

int main()
{
    X<int> xint;
    X<double> xdouble;
    X<std::string> xstring;
}
Nahlásit jako SPAM
IP: 212.96.189.–
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, 86 hostů

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ý