Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z wywołaniem funkcji zaimplementowanej w oddzielnym pliku i w przestrzeni nazw

Ostatnio zmodyfikowano 2015-03-30 21:32
Autor Wiadomość
NorbertusWielki
Temat założony przez niniejszego użytkownika
Problem z wywołaniem funkcji zaimplementowanej w oddzielnym pliku i w przestrzeni nazw
» 2015-03-30 21:06:41
Witam. Napisałem program, który zawiera funkcje zwracająca najmniejszą i największą wartość tablicy jednocześnie. Stworzyłem strukturę danych gdzie utworzyłem zmienne min i max oraz utworzyłem zmienną pudelko by zwrócić wartości. Według kompilatora nie ma tam błędu. Jednak próba wywołania funkcji kończy się niepowodzeniem, a kompilator krzyczy, że w pliku main nie mogę utworzyć zmiennej typu, który określiłem w strukturze lecz w innym pliku. Może ktoś wie dlaczego tak się dzieje? Może mi ktoś coś doradzić?

Oto kod z wszystkich trzech plików:

1.funkcje.h:


C/C++
#ifndef H_FUNKCJE
#define H_FUNKCJE

namespace function
{
   
   
   
    namespace norbert
    {
        struct maxmin;
        maxmin fun( int tab[], const unsigned size );
       
       
    }
   
   
   
   
   
   
}
#endif //funkcje


2.funkcje.cpp:


C/C++
#include "funkcje.h"
#include "maxmin.h"


namespace function
{
   
   
    namespace norbert
    {
        struct maxmin
        {
            int min;
            int max;
           
        };
        maxmin pudelko;
        maxmin fun( int tab[], const unsigned size )
        {
            pudelko.min = tab[ 0 ];
            pudelko.max = tab[ 0 ];
            for( int i = 0; i < size; i++ )
            {
                if( tab[ i ] > pudelko.max )
                     tab[ i ] = pudelko.max;
               
            }
            for( int i = 0; i < size; i++ )
            {
                if( tab[ i ] < pudelko.min )
                     tab[ i ] = pudelko.min;
               
            }
            return pudelko;
        }
       
       
    }
   
   
   
   
   
}


3.main.cpp:

C/C++
#include <iostream>
#include "funkcje.h"
using namespace function;
using namespace norbert;
int main()
{
    maxmin wynik;
   
    int Tablica[ 5 ] = { 12, 12, 3, 1, 4 };
    maxmin wynik =::function::norbert::fun( Tablica, 5 );
   
    std::cout << wynik << std::endl;
   
   
    return 0;
}



Błąd wygląda następująco : "incomplete type is not allowed"
tu jest zrzut ekranu z kompilatorem:
http://zapodaj.net/5b9f89f00d802.png.html
P-129594
pekfos
» 2015-03-30 21:25:48
Definicja struktury ma być w pliku nagłówkowym.
P-129596
NorbertusWielki
Temat założony przez niniejszego użytkownika
» 2015-03-30 21:32:53
Dziękuję ci za odpowiedź! Poprawiłem i dałem definicje struktury do pliku funkcje.h.
Program zaczął działać. Mała rzecz a tyle nerwów potrafi popsuć , jeszcze raz dzięki!
P-129597
« 1 »
  Strona 1 z 1