Objekt v hlavičkovém souboru – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Objekt v hlavičkovém souboru – C / C++ – Fórum – Programujte.comObjekt v hlavičkovém souboru – C / C++ – Fórum – Programujte.com

 

Koder
~ Anonymní uživatel
26 příspěvků
2. 1. 2013   #1
-
0
-

Zdravim mam nasledujci kody:

 soubor poprve.cpp

#include <cstdlib>
#include <iostream>
#include "pr.h"

using namespace std;

int main(void)
{ 
    int k, l;
	cout <<"\nNacti prvni cislo ";
	cin >> k;
	cout <<"Nacti druhe cislo ";
	cin >> l;
	
    Vypocty Prvni;
    Prvni.NastavHodnoty(k,l);
	cout << "Soucet cisel "<< k << " a " << l << " je ";
	cout << Prvni.Soucet(k,l) <<"\n";
	
	system("pause");
	return 0;
}

soubor pr.h

#include <iostream>
#ifndef _PR_H_
#define _PR_H_

class Vypocty                     
{
public:					    	   
	int Soucet(int, int);          
    int NastavHodnoty(int, int);   
private:					   
	int prvni_promenna;   
	int druha_promenna; 
};

#endif

soubor prf.cpp


#include "pr.h"

int Vypocty::NastavHodnoty(int, int) 
{                                   
  prvni_promenna = k;
  druha_promenna = l;
}

int Vypocty::Soucet(int, int)  
{                             
   return prvni_promenna + druha_promenna;   
}

A ted duvod proc sem pisu, pri kompilaci mi to neustale tahe chybu

[Linker error] undefined reference to `Vypocty::NastavHodnoty(int, int)'

[Linker error] undefined reference to `Vypocty::Soucet(int, int)'

ld returned 1 exit status

Nevite nekdo prosím kde je chyba?

Nahlásit jako SPAM
IP: 212.96.160.–
Furynka0
Newbie
2. 1. 2013   #2
-
0
-

Ahoj, problém máš v kompilaci, není to kódem (ale i v něm je pár chyb   ). Musíš zkompilovat všechny .cpp soubory. 

Např. v unixu příkazem g++ poprve.cpp prf.cpp -o poprve

Co používáš za IDE nebo jak kompiluješ?

Nahlásit jako SPAM
IP: 90.178.176.–
vitamin+8
Grafoman
2. 1. 2013   #3
-
0
-

skus premenovat "prf.cpp"  na   "pr.cpp"   alebo zadavaj linkvanie manualne pripadne cez makefile.

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Koder
~ Anonymní uživatel
26 příspěvků
2. 1. 2013   #4
-
0
-

#2 Furynka
Kompiluji v programu DEV C++ ve win7, když jsem podobne delal jen funkce (bez obejktu) tak mi to fungovalo. :(

Nahlásit jako SPAM
IP: 212.96.160.–
Koder
~ Anonymní uživatel
26 příspěvků
2. 1. 2013   #5
-
0
-

#2 Furynka
Jak ho tedy zkompilovat? Zkoušel jsem si stahnout i jine programy a také jsem měl problém s kompilací. 

Nahlásit jako SPAM
IP: 212.96.160.–
vitamin+8
Grafoman
2. 1. 2013   #6
-
0
-

Kazdy .cpp subor musis skompilovat zvlast a potom ich zlinkovat. viz #2. Ak chces aby to za teba robilo IDE tak musis mat subory v tom istom projekte.

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Koder
~ Anonymní uživatel
26 příspěvků
2. 1. 2013   #7
-
0
-

Tak už mi to funguje, problém byl v tom že jsem jednotlivé soubory(.cpp;.cpp;.h) neměl pod jedním projektem, myslel jsem že stačí jen když jsou v jedné složce.

Díky moc za pomoc, už jsem myslel že se dnes nevyspím. :)

Nahlásit jako SPAM
IP: 212.96.160.–
RePRO0
Super člen
3. 1. 2013   #8
-
0
-

Zdravím,

i jednoduché sčítání dvou čísel se dá z hlediska objektů pokazit? Správně by měla být metoda součet bez parametrů.

Nahlásit jako SPAM
IP: 95.82.185.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
vitamin+8
Grafoman
3. 1. 2013   #9
-
+1
-
Zajímavé

#8 RePRO
Cely ten kod co sem dal je divny :)

Hlavne ze to ma v 2 moduloch nech zabrani kompilatoru inlinovat metody...

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Furynka
~ Anonymní uživatel
16 příspěvků
4. 1. 2013   #10
-
0
-

Teď by si měl trochu pořešit "logiku" toho kódu  

Ty jsi vytvořil objektVypocty, který má 2 atributy a 2 metody. Důležité je, že metody (funkce v objektu) mají přístup k atributům toho objektu. Ty jsi částečně dobře definoval metod Soucet,ale cpeš tam ještě nějaké 2 int hodnoty, které tam vůbec nejsou potřeba.

Vypocty pokus;

pokus.NastavHodnoty(2, 3);
pokus.Soucet(100, 200); // = 5       :)
Nahlásit jako SPAM
IP: 90.178.176.–
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, 18 hostů

Podobná vlákna

Ukazovatel na objekt — založil Anonymní uživatel

Objekt a polia? — založil WraCkeR

Objekt cin — založil q

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ý