Problem s prevodem typu(?) + tridama – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problem s prevodem typu(?) + tridama – C / C++ – Fórum – Programujte.comProblem s prevodem typu(?) + tridama – C / C++ – Fórum – Programujte.com

 

jak
~ Anonymní uživatel
3 příspěvky
25. 2. 2008   #1
-
0
-

Ahoj, podle Mistrovstvi v c++ delam ukol 10te lekce a pise mi to chybu (ja se v nich nevyznam vubec).. radsi ukazu konkretni kody..

chyba:

$ g++ ukol10_1func.cpp ukol10_1.h ukol10_1.cpp -o ukol10_1.o

ukol10_1func.cpp: In constructor ‘account::account(const char**, const char**, float)’:
ukol10_1func.cpp:10: error: cannot convert ‘const char**’ to ‘const char*’ for argument ‘2’ to ‘char* strncpy(char*, const char*, size_t)’
ukol10_1func.cpp:12: error: cannot convert ‘const char**’ to ‘const char*’ for argument ‘2’ to ‘char* strncpy(char*, const char*, size_t)’
ukol10_1.cpp: In function ‘int main()’:
ukol10_1.cpp:20: error: no matching function for call to ‘account::account(char [30], char [30])’
ukol10_1.h:13: note: candidates are: account::account(const char**, const char**, float)
ukol10_1.h:7: note: account::account(const account&)
ukol10_1.cpp:22: error: jump to case label
ukol10_1.cpp:20: error: crosses initialization of ‘account your_acc’
ukol10_1.cpp:28: error: jump to case label
ukol10_1.cpp:20: error: crosses initialization of ‘account your_acc’
ukol10_1.cpp:34: error: duplicate case value
ukol10_1.cpp:28: error: previously used here
ukol10_1.cpp:34: error: jump to case label
ukol10_1.cpp:20: error: crosses initialization of ‘account your_acc’
ukol10_1.cpp:37: error: jump to case label
ukol10_1.cpp:20: error: crosses initialization of ‘account your_acc’


soubory:
$ cat ukol10_1func.cpp 

//ukol10_1func.cpp -- spravuj si svuj account - funkce
//kompilator == ukol10_1.h ukol10_1.cpp ukol10_1func.cpp
#include<iostream>
#include"ukol10_1.h"
#include<cstring>

using namespace std;

account::account(const char* name[SLEN], const char* acc_num[SLEN], float remainder) {
strncpy(m_name, name, SLEN);
m_name[SLEN] = '\0';
strncpy(m_acc_num, acc_num, SLEN);
m_acc_num[SLEN] = '\0';
remainder = this->m_remainder;
}

void account::show_acc() const {
cout << "Jmeno: " << m_name << "\nCislo uctu: " << m_acc_num << "\nZustatek: " << m_remainder;
}

void account::deposit_cash(float cash) {
m_remainder += cash;
}

void account::withdraw_cash(float cash) {
m_remainder -= cash;
}


$ cat ukol10_1.h 

//ukol10_1.h -- spravujte si svuj account - hlavicka
//kompilator == ukol10_1.h ukol10_1.cpp ukol10_1func.cpp
#ifndef UKOL10_1_H
#define UKOL10_1_H

const int SLEN = 30;
class account {
private:
char m_name[SLEN];
char m_acc_num[SLEN];
float m_remainder;
public:
account(const char* name[SLEN]='\0', const char* acc_num[SLEN]='\0', float remainder=0.0);
void show_acc() const;
void deposit_cash(float cash);
void withdraw_cash(float cash);
};

#endif


$ cat ukol10_1.cpp 

//ukol10_1.cpp -- spravuj si svuj account - program
//kompilator == ukol10_1.cpp ukol10_1.h ukol10_1func.cpp
#include<iostream>
#include"ukol10_1.h"
using namespace std;

int main()
{
char option = 'a';
while (option != 'q') {
cout << "\nCo si prejete delat: \na)zadat udaje\nb)vlozit castku na ucet\nc)vybrat castku\nd)zobrazit udaje\nq)skoncit";
cin >> option;
switch (option) {
case 'a':
cout << "Zadejte sve jmeno: ";
char cname[SLEN], cacc_num[SLEN];
cin.get(cname, SLEN).get();
cout << "\nNyni cislo uctu: ";
cin.get(cacc_num, SLEN).get();
account your_acc(cname, cacc_num);
break;
case 'b':
cout << "Kolik chcete vlozit: ";
float cremainder;
cin >> cremainder;
your_acc.deposit_cash(cremainder);
break;
case 'c':
cout << "Kolik chcete vybrat: ";
float cwithdraw;
cin >> cwithdraw;
your_acc.withdraw_cash(cwithdraw);
break;
case 'd':
your_acc.show_acc();
break;
case 'q': break;
}
}
cout << "\nAhoj\n";
return 0;
}


tak.. je to asi hodne zmatene (jsem zacatecnik samouk, desne levej):(
neni to zadny dokonale promysleny program, hlavne by me zajimalo to - 'cannot convert ‘const char**’ to ‘const char*’
... tak abych nejak objasnil, normalne to vytvori pomoci tridy ucet, ktery se potom clenskejma funkcema spravuje. snazil jsem se s tim neco delat, mam to presne tak, jak mi to je logicky, i v ucebnici to je tak, ze v tride je deklarovana promenna char i; treba a pak kopiruje se do ni retezec z const char* .. a to je nejsrozumitelnejsi vysvetleni ke kterymu jsem prisel.
Bohuzel nemam nikoho na poradeni kolem sebe, tak vas prosim jestli byste mi nekdo nepomohl.
Moc bych byl vdecen, kdyztak kdyby bylo potreba jeste neco vedet, vsecko reknu hned.

Nahlásit jako SPAM
IP: 84.21.126.–
AdamHlavatovic0
Stálý člen
26. 2. 2008   #2
-
0
-

Nazdar chybu mate, tak ako vám aj oznamuje kompilátor v konštruktore triedy account
account(const char* name[SLEN]='\0', const char* acc_num[SLEN]='\0', float remainder=0.0);, ktorý má vypadať nasledovne:

account(const char * name = "", const char * acc_num = "", float remainder = 0.0f);

alebo aj takto
account(const char name[] = "", const char acc_num[] = "", float remainder = 0.0f);

Nahlásit jako SPAM
IP: 217.73.16.–
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, 31 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ý