"Vytáhnout" string z třídy – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

"Vytáhnout" string z třídy – C / C++ – Fórum – Programujte.com"Vytáhnout" string z třídy – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Matherz0
Newbie
17. 3. 2012   #1
-
0
-

Zdravím,

dělám projekt v obyčejném c++ bez frameworku a třídy mam rozdělených do hlavičkových souboru a mám třídu ve smyslu:

void trida::neco(string s)
{
   replace( s.begin(), s.end(), 'á', 'a' );
   // cout << s; 
}

a třídu volám

trida->neco("á");

A nevím jak "vytáhnout" string s z třídy ve smylu abych ho mohl použít v main a ne jenom ve třídě jak je tam třeba zakomentované "print".

#include ...


using namespace std;

int main()
{
  trida *Trida = new trida();

  Trida::neco("á");
  cout << s;
}

// Příkladová ukázka

děkuji předem za pomoc

Nahlásit jako SPAM
IP: 212.96.160.–
Reklama
Reklama
crazy
~ Moderátor
+10
Grafoman
17. 3. 2012   #2
-
0
-

#1 Matherz
použij getter:

class Trida {
    string tvuj_string;
public:
	string getString() { return tvuj_string; }
};

a pak ho vytahnes:

objekt->getString();
Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
meqi+1
Newbie
17. 3. 2012   #3
-
0
-

Nebo to můžeš udělat přes referenci, pokud potřebuješ hodnotu i měnit (i když je pravda, že by tu stačilo dát hodnotu orvnou public)

class Trida {
    string m_text;
public:
    Trida(string text) : m_text(text) { }
    string& textRef() {
        return m_text;
    }
};

A použití jako: 

    Trida trida("super text");

    cout << trida.textRef(); // super text

    trida.textRef() = "blbej text";

    cout << trida.textRef(); // blbej text

Nahlásit jako SPAM
IP: 213.168.183.–
Matherz0
Newbie
17. 3. 2012   #4
-
0
-

Crazy Moc ti dík za radu nakopl jsi mě správným směrem ale skoušel jsem to v mé třídě ale už si nevím rady.. + karma samozřejmně

class trida
{
	//string s;
public:
	void neco(string s);
	//string getString() { return s; }
};


void trida::neco(string s)
{
	replace( s.begin(), s.end(), 'A', '(' );

Prostě si nevím rady skoušel jsem to typem :

cout << Trida->getString();

ale string pokaždé měl hodnotu null

meqi: tobe taky děkuji +karma

Nahlásit jako SPAM
IP: 212.96.160.–
meqi+1
Newbie
17. 3. 2012   #5
-
0
-

Však ti to jasně psal, vracet musíš hodnotu z proměný, né ukázat na třídu

#include <iostream>
#include <string>

using namespace std;

class Trida
{
    string text;

public:
    void setText(string vstupniText);
    string getText() const;
};

void Trida::setText(string vstupniText)
{
    text = vstupniText;
}

string Trida::getText() const
{
    return text;
}

int main()
{
    // bez alokace
    Trida trida;
    trida.setText("ahoj svete");
    cout << trida.getText();
   
    // s alokaci
    Trida* trida = new Trida;
    trida->setText("ahoj svete");
    cout << trida->getText();

    return 0;
}
Nahlásit jako SPAM
IP: 213.168.183.–
crazy
~ Moderátor
+10
Grafoman
17. 3. 2012   #6
-
0
-

#4 Matherz

class trida
{
	string s;
public:
	trida(string str) : s( str ) {
	}
	void neco() {
		replace( s.begin(), s.end(), 'A', '(' );
	}
	string getString() { return s; }
};

// a pak

int main( void )
{
	trida moje("Toto je tvuj string.");
	moje.neco();
	cout << moje.getString();
}

EDIT: meqi byl rychlejší

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
m->29+6
Super člen
17. 3. 2012   #7
-
0
-

A nestačí ti jednoduché 

string trida::neco(string s)
{
   replace( s.begin(), s.end(), 'á', 'a' );
   return s; 
}

A potom

#include ...


using namespace std;

int main()
{
  trida *Trida = new trida();

  cout << Trida::neco("á");
}

Nahlásit jako SPAM
IP: 83.240.51.–
crazy
~ Moderátor
+10
Grafoman
17. 3. 2012   #8
-
0
-

#7 m->29

cout << Trida::neco("á"); // to nebude fungovat

// když už tak
cout << Trida->neco("á");

// a v tomto případě by mohl udělat tu fci statickou a použíat ji pouze jako:
cout << trida::neco("á");
Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Matherz0
Newbie
17. 3. 2012   #9
-
0
-

Díky všem ( tamto jsem psal narychlo tak jsem si neuvědomil že jsem neudělal -> ).

Díky všem za rady + karma

Nahlásit jako SPAM
IP: 212.96.160.–
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, 176 hostů

Moderátoři diskuze

 

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