Jmenné prostory(C++) – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jmenné prostory(C++) – C / C++ – Fórum – Programujte.comJmenné prostory(C++) – C / C++ – Fórum – Programujte.com

 

Midnight
~ Anonymní uživatel
78 příspěvků
10. 10. 2009   #1
-
0
-

Zdravím!

Mám menší problém. Dostal jsem za úkol udělat jednoduchý program složený ze tří zdrojových souborů. V prvním jsou definované typy a prototypy, v druhém samotné funkce a ve třetím funkce main().

Problém je, že pokud použiju ve funkci main funkci z druhého souboru, kompilátor to bere jako kdybych přetěžoval funkci, kde neví zdali zvolit prototyp z prvního souboru, nebo definovanou funkci ze druh=ho souboru.

Podle mě je problém kdesi ve jmenných prostorech, ale nějak mě nenapadá kde, tak vás chci poprosit, jestli na to nemůžete kouknout.

První soubor:

namespace SALES

{
const int QUARTERS = 4;
struct Sales
{
double sales[QUARTERS];
double average;
double max;
double min;
};

void setSales(Sales & s, const double ar[], int n);
void setSales(Sales & s);
void showSales(const Sales & s);
}


Druhý soubor:
#include "prvni.cpp"

#include <iostream>
using namespace SALES;
using std::cout;
using std::cin;
using std::endl;

void setSales(Sales & s, const double ar[], int n)
{
int x;
if (n < 4)
x = n;
else
x = 4;
for (int i = 0; i <x; i++)
s.sales[i] = ar[i];
for (int i = 0; i <x; i++)
s.average += s.sales[i];
s.average /= x;
double max=-32000;
for (int i = 0; i<x; i++)
{
if (s.sales[i] < s.sales[i+1])
max = s.sales[i+1];
}
double min;
for (int i = 0; i<x; i++)
{
if (s.sales[i] > s.sales[i+1])
min = s.sales[i+1];
}
s.max = max;
s.min = min;
}


Třetí soubor:
#include "druhy.cpp"

using namespace SALES;
int main()
{
Sales s;
double ar[10] = { 1, 3, 2, 5, 4 };
int n = 3;

setSales(s,ar,n);

cin.get();
cin.get();
return 0;
}

Nahlásit jako SPAM
IP: 92.62.227.–
Matrix17
~ Anonymní uživatel
300 příspěvků
11. 10. 2009   #2
-
0
-

Trošičku sem ti to upravil. Takhle by ti to mělo fungovat. Chyba byla v tom že si nedefinoval funkci setSales ve jmenném prostoru takže kompilátor pak nevěděl k čemu ta funkce patří.



#include "prvni.h"
using namespace SALES;

int main()
{

Sales s;
double ar[10] = { 1, 3, 2, 5, 4 };
int n = 3;

SALES::setSales(s, ar, n);

cin.get();
cin.get();

return 0;

}




#include <iostream>
using std::cout;
using std::cin;
using std::endl;

namespace SALES
{

const int QUARTERS = 4;
struct Sales
{
double sales[QUARTERS];
double average;
double max;
double min;
};

void setSales(Sales & s, const double *ar, int n);
void setSales(Sales & s);
void showSales(const Sales & s);
}

#include "prvni.h"
using namespace SALES;

namespace SALES
{
void setSales(Sales & s, const double *ar, int n)
{

int x;
if (n < 4)
x = n;
else
x = 4;

for (int i = 0; i <x; i++)
s.sales[i] = ar[i];

for (int i = 0; i <x; i++)
s.average += s.sales[i];

s.average /= x;
double max=-32000;

for (int i = 0; i<x; i++)
{
if (s.sales[i] < s.sales[i+1])
max = s.sales[i+1];
}

double min;
for (int i = 0; i<x; i++)
{
if (s.sales[i] > s.sales[i+1])
min = s.sales[i+1];
}

s.max = max;
s.min = min;
}
}



Nahlásit jako SPAM
IP: 78.156.128.–
Midnight
~ Anonymní uživatel
78 příspěvků
11. 10. 2009   #3
-
0
-

Děkuji moc, už to funguje.

Myslel jsem si totiž, že stačí použít using nemespace SALES a dále pak už nemusím používat namespace SALES {...}

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