Oppure

Loading
20/08/09 12:26
Pippo_94
Salve a tutti, oggi ho provato a riscrivere il famoso Hello World utilizzando il paradigma OOP. Questo è il mio codice:

#include<iostream>
#include<string>

using namespace std;

using std :: cout;

class Ciao
{
    string saluto;

    public: string mostra()
    {
        return "Ciao, mondo!";
    }

}

int main()
{
    Ciao hello;

    cout << hello.mostra << endl;

    system("pause");

    return 0;
}



Siccome provando a compilarlo (per chi volesse saperlo uso Code::Blocks) mi vengono fuori diversi errori, volevo un piccolo suggerimento su dove posso aver sbagliato il codice e quindi su come potrei riscriverlo. Grazie!!!

P.s.: gli errori che mi da sono i seguenti:

Q:\C++\CiaoOOP.cpp|20|error: new types may not be defined in a return type|
Q:\C++\CiaoOOP.cpp|20|note: (perhaps a semicolon is missing after the definition of `Ciao')|
Q:\C++\CiaoOOP.cpp|20|error: extraneous `int' ignored|
Q:\C++\CiaoOOP.cpp|20|error: `main' must return `int'|
Q:\C++\CiaoOOP.cpp||In function `int main(...)':|
Q:\C++\CiaoOOP.cpp|23|error: no match for 'operator<<' in 'std::cout << hello.Ciao::mostra'|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\bits\ostream.tcc|63|note: candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>&(*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\bits\ostream.tcc|74|note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ios<_CharT, _Traits>&(*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\bits\ostream.tcc|86|note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base&(*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits<char>]|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\bits\ostream.tcc|121|note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char, _Traits = std::char_traits<char>]|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\bits\ostream.tcc|155|note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\bits\ostream.tcc|98|note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char, _Traits = std::char_traits<char>]|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\ostream|178|note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char, _Traits = std::char_traits<char>]|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\ostream|189|note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\ostream|193|note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char, _Traits = std::char_traits<char>]|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\ostream|204|note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\bits\ostream.tcc|179|note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char, _Traits = std::char_traits<char>]|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\bits\ostream.tcc|214|note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\bits\ostream.tcc|238|note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char, _Traits = std::char_traits<char>]|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\ostream|219|note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char, _Traits = std::char_traits<char>]|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\bits\ostream.tcc|261|note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char, _Traits = std::char_traits<char>]|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\bits\ostream.tcc|284|note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = char, _Traits = std::char_traits<char>]|
C:\Programmi\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32.4.5\..\..\..\..\include\c++.4.5\bits\ostream.tcc|307|note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = char, _Traits = std::char_traits<char>]|
||=== Build finished: 4 errors, 0 warnings ===|
Ultima modifica effettuata da Pippo_94 20/08/09 12:28
aaa
20/08/09 12:44
manvb.net
Postato originariamente da Pippo_94:
#include<iostream>
#include<string>

using namespace std;

using std :: cout;

class Ciao
{
    string saluto;

    public: string mostra()
    {
        return "Ciao, mondo!";
    }

}

int main()
{
    Ciao hello;

    cout << hello.mostra << endl;

    system("pause");

    return 0;
}




Togli
using std :: cout;
metti un ; alla chiusura della classe ciao:

class Ciao
{
    string saluto;

    public: string mostra()
    {
        return "Ciao, mondo!";
    }

};

e metti le () in dopo mostra:
cout << hello.mostra() << endl;
aaa
20/08/09 12:49
Pippo_94
Grazie mille! Mi hai salvato...oramai non sapevo più dove sbattere la testa ^^
aaa
20/08/09 12:51
manvb.net
Di niente, comunque ricorda sempre i ; alla fine delle classi, è un errore molto comune.
aaa
25/08/09 23:19
giupeppe
Eh già...se metti using namespace std; non serve mettere il cout perchè è tutto incluso nel namespace.

Nella classe prendi l'abitudine di scrivere anche lo specificatore d'accesso private:
e quando apri la graffa prendi l'abitudine di chiuderla subito dopo e metti i due punti. ({ };)...e poi scrivi le funzioni e dati membro all interno.

Ogni volta che chiami una funzione devi mettere le parentesi anche se la funzione non contiene parametri...puoi scrivere void o lasciare in bianco...così: mostra() o così: mostra(void).

aaa