Void, a int main

0

Cześć, zacząłem się uczyć C++, jest to moja pierwsza styczność z programowaniem, ale mam problem, który mnie irytuje.

Próbowałem znaleźć coś na forum, ale są rzeczy dotyczące voida dla bardziej zaawansowanych. Teoretycznie poradziłem sobie inną metodą, ale chciałbym zrozumieć swój błąd. Uczę sie z kursów xiona, cpp0x, książek Praty.

// Obsługa strumienia wyjścia i wejścia

#include <iostream>
#include <conio.h>
#include <string>

using namespace std;

void funkcja()
{
    string imie;
    cout << "Podaj swoje imie: ";
    cin >> imie;
    cout << "Twoje imie to " << imie << "." << endl;
    getch();

}


// Obsługa strumienia wyjścia i wejścia

#include <iostream>
#include <conio.h>
#include <string>

using namespace std;

int main()
{
    string imie;
    cout << "Podaj swoje imie: ";
    cin >> imie;
    cout << "Twoje imie to " << imie << "." << endl;
    getch();
    return 0;
}

W drugim jest wszystko oczywiste, natomiast w pierwszym nie jestem pewien błędu, zresztą taki kod jest w tutorialu xiona.

1

Ale... jakie jest pytanie?

0

A, zapomniałem dodać ;)

||=== Build: Debug in test (compiler: GNU GCC Compiler) ===|
D:\Projekty\test\main.cpp|6|error: '::main' must return 'int'|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|

Tekst błędu, nie wiem jak poradzić sobie, aby umieścić to w funkcji void.

1

Jeśli pierwszy listing to cały program, to brak w niej funkcji main. Sygnatura main jest z góry narzucona przez standard języka (przynajmniej w dużej mierze).

0

Po zmianie na main:

// Input – użycie zmiennych i strumienia wejścia
#include <string>
#include <iostream>
#include <conio.h>

void main()
{
   std::string strImie;
   std::cout <<"Podaj swoje imie: ";
   std::cin >> strImie;
   std::cout   << "Twoje imie to " << strImie <<  "." << std::endl;
   getch();
}

Błąd w dalszym ciągu:
D:\Projekty\test\main.cpp|6|error: '::main' must return 'int'|

0

A weź spróbuj tak.

// Input – użycie zmiennych i strumienia wejścia
#include <string>
#include <iostream>
#include <conio.h>

int main()
{
   std::string strImie;
   std::cout <<"Podaj swoje imie: ";
   std::cin >> strImie;
   std::cout   << "Twoje imie to " << strImie <<  "." << std::endl;
   getch();
}
2

Jak u Ciebie z językiem angielskim?

'::main' must return 'int'

oznacza

'::main' musi zwracać 'int'

0

Ale ja angielski bardzo dobrze rozumiem, jedyne co to nie mogę zrozumieć logiki tego błędu i nie wiem jak sobie poradzić z voidem, tak jak jest w przykładzie xiona.

Zamieniłem właśnie na int samodzielnie, dodałem return 0; w sensie co ma zwracać. Ale mi chodzi o sam fakt, że coś takiego jest w tutorialu.

Część druga: z czego składa się program, strona 11 (http://xion.org.pl/files/texts/mgt/pdf/1_2.pdf)

3

Tutorial xiona ma, o ile się nie mylę, ok. 20 lat. Inaczej mówiąc, jest jeszcze starszy niż Symfonia C++.

Nie rozumiem czego nie rozumiesz w takim razie - main ma zwracać int, więc jak próbujesz na siłę sprawić aby zwracał void to kompilator mówi, że robisz źle.

0

Po prostu się uczę, a czytałem tu na forum (nie jakieś stare wątki), że to polecany kurs. Z racji jednak tego, że wywalało mi ten błąd, a nie wiedziałem dlaczego postanowiłem się zapytać. Lepiej dowiedzieć się więcej niż mniej.

@kq jest sens z niego się uczyć, czy go odstawić lepiej?

2

W pierwszym programie musisz dodać funkcję main, która wywoła funkcje funkcja.

int main( int, char** )
{
  funkcja();
  return 0;
}
0

Wystarczy, że zmienisz nazwę funkcji "funkcja" na main. Void zastąpisz int a na koncu funkcji dodasz return ( TRUE ).

1 użytkowników online, w tym zalogowanych: 0, gości: 1