Newsgroup: it.comp.lang.c++
Titolo: Possibile che sia sbagliata un'istruzione così banale?

cout << coeff[k + 1] << "   ";
dov'č l'errore please?
Il compilatore dice:   syntax error: identifier 'cout'

 Il compilatore dice:   syntax error: identifier 'cout'
prova a mettere std::cout << coeff[k + 1] << "   ";
che compilatore usi?
--
Gerolamo
Using: Win2000 Pro, Borland C++ Compiler 5.5.1
Listening: Marillion - Bitter Suite

 che compilatore usi?
Win 2000 pro. Microsoft Visual C++ 6.0

 "std"
ooops :-)))
fammi capire, questo ti compila?
#include <iostream>
int main()
{
    int k;
    int coeff[5] = {1, 2, 3, 4 ,5 };
    for (k= -1; k<4;++k)
         std::cout << coeff[k + 1] << "   ";
}
magari posta un pezzo del programma...
(anche che #include hai messo)
--
Gerolamo
Using: Win2000 Pro, Borland C++ Compiler 5.5.1
Listening: Afterhours - Voglio una pelle splendida

 }
Mi da un avvertimento su int main(), ma sostituendolo con void main() lo
compila senza problemi.
ho cambiato l'struzione nella banalissima
cout << "coeff[k + 1]";
che ai fini dell'esecuzione del programma non ha alcuna utilità però ho
provato e grande sorpresa ... l'errore rimane!!!!!!!
E' impossibile no???
ecco un pezzo del prog nei dintorni della linea "difettosa"
coeff[0] = 0;
coeff[1] = elevaAPotenza (a, esponente);
coeff[2] = elevaAPotenza (b, esponente);
for (i = 1; i <= esponente; i++);
{
cout << endl;
k=0;
 do
  coeff[k + 1] += coeff[k];
  cout << coeff[k + 1] << "   ";     // questa è la linea difettosa
  k++;
  while (k == i + 1);
}

 E' impossibile no???
Ma come e' impossibile?
Sai cosa e' un namespace ?
Scrivere:
    std::cout  <<  ....
    cout << ....
    ::cout << .....
    ::std::cout << ......
sono quattro cose completamente diverse.
Ciao
Gaetano.
-- 
Posted from 
dell-01.mm.eutelsat.org
 [194.214.173.17] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 sono quattro cose completamente diverse.
E' anche vero che se ha un compilatore che si lamenta per "int main()" e
compila senza warning "void main()" non so che genere di supporto
aspettarmi per i namespace...
Non sapevo che Herbert Schildt avesse scritto un compilatore :-)
Ciao,
Nicola

E' impossibile no???
Se hai incluso l'header standard <iostream> cout lo trovi sotto il
namespace std. Non devi usare cout del namespace globale, perché tale
metodo risale all'epoca pre-standardizzazione del linguaggio e
peraltro richiede che venga usato l'obsoleto <iostream.h>
Il Ghenio
---------
These are my parting words to you:
those who give up are doomed!

Ma come e' impossibile?
Sai cosa e' un namespace ?
NO
Scrivere:
    std::cout  <<  ....
    cout << ....
    ::cout << .....
    ::std::cout << ......
sono quattro cose completamente diverse.
Tu avrai anche ragione ma io sono 3 sett che studio il C++ e non posso
pretendere di sapere tutto. Cerca di capirlo.
comunque non conosco la semantica delle istruzioni che mi hai elencato.
Provandole peggioro solo la situazione.
Krauss

 }
Penso che tu abbia dimenticato le parentesi graffe per il blocco
tra do e while()
Ciao
    Fed

 NO
Allora studiali e tutto ti sara' piu' chiaro.


 sono quattro cose completamente diverse.
gia' che ci siamo: quando indico esplicitamente lo scope globale con :: 
mi considera anche i nomi importati con le direttive using?
Ad esempio:
        #include <iostream>
        using namespace std;
        ::cout; // e' definito o mi da errore?
ciao Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

        ::cout; // e' definito o mi da errore?
Dovrebbe considerare solo il namespace globale, se il compilatore si
comporta correttamente.


         ::cout; // e' definito o mi da errore?
E definito perche' e come se facessi il merge dei due scope.
Se facendo using namespace std;
cout << 
ci fosse anche un cout definito nello scope globale il compilatore
ti direbbe che e' ambiguo e a quel punto devi specificare se ::cout
o std::cout.
Lo standard dice a proposito:
"If a function declaration in namespace scope or block scope has the 
same name and the same parameter types as a function introduced by 
a usingdeclaration, the program is illformed."
Per gli unnamed name space le cose cambiano infatti i simboli
dentro vengono visti senza bisogno di specificare lo scope, infatti
scrivere
namespace {   
        void f() { std::cout << "f() unnamed" << std::endl; } 
}
equivale a scrivere:
namespace _A_NAME_UNIQUE_ { /*empty/* }
using namespace _A_NAME_UNIQUE_;
namespace _A_NAME_UNIQUE_ {   
        void f() { std::cout << "f() unnamed" << std::endl; } 
}
se ora aggiungi:
namespace mio {
        void f() { std::cout << "f() mio" << std::endl; }
}
void f() { std::cout << "f()" << std::endl; }
e scrivi:
f();  // <-  Ambiguita' tra f() global e <unnamed>::f()
se invece fai
using namespace mio;
f(); // <- Ambiguita' tra tutte le 3 f();


 tra do e while()
GRANDE   GRANDE   GRANDE   !!!!!!!!!!
Esatto. Ora lo ha compilato correttamente però il programma non funge come
dovrebbe, ... ma questa è un'altra storia.
Thanks, Krauss