Newsgroup: it.comp.lang.c++
Titolo: Help (static)

Il seguente codice non compila, segnalando errore di link: non trova il
riferimento a "prova::p", nonstante sia definito eccome! Dove sbaglio?
-------------------------------------------
#include "iostream.h"
class prova {
 public:
  static char* p;
  prova(char* n);
};
 
prova::prova(char *n) {
  prova::p = n;
}
 
int main() {
 prova p("Ciao");
 cout << prova::p;
 return 0;
}

 }
Ciao,
Nicola
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

char * prova::p;
Grazie 1000

 Acc... non lo sapevo... quale e' il nome non-obsoleto?
#include <iostream>
Attento che questo definisce il suo contenuto nel namespace std. Dovrai
quindi usare 'std::cout' invece di 'cout', e cosi' via. Esistono anche
scorciatoie per questo, ma hanno vantaggi e svantaggi.


scorciatoie per questo, ma hanno vantaggi e svantaggi.
Potresti darmi qualche spunto in piu' su questo aspetto? Magari qualche
maggiore dettaglio, o al massimo qualche link?
Grazie.

 wrote in message
news:as4pbm$8gp$
1...@newsreader.mailgate.org

Puoi cominciare da qui:
http://www.gotw.ca/gotw/053.htm



con tutto il rispetto per i geni della standardizzazione......ma a me
questa cosa di togliere le estensioni mi pare una _________ (array di
caratteri da riempire con una parola di 9 lettere) :)

 caratteri da riempire con una parola di 9 lettere) :)
E' stato fatto per permettere la coesistenza degli header standard con
quelli preesistenti, per evitare di "rompere" il codice che si basava su
questi ultimi e consentire quindi di compiere la transizione col minor
dolore possibile.


 dolore possibile.
E mi sembra di aver letto anche che è stato fatto poichè tipicamente gli
header contengono definizioni di template, e non è bello scrivere
definizioni in un file header.
-- 
Andrea Bergia - studente              Linux Registred User #281550
"The one thing we're all waiting for, is peace on Earth and an end to war,
it's a miracle we need, the miracle, the miracle, 
Peace on earth and end to war today,
That time will come one day you'll see when we can all be friends"

 caratteri da riempire con una parola di 9 lettere) :)
secondo me e` una bella cosa: perlomeno quando sfoglio un libro capisco 
subito se e` da prendere in considerazione o no: se alla prima riga vedo 
un <iostream.h> lo richiudo e lo metto a posto... ;-)
ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra

 caratteri da riempire con una parola di 9 lettere) :)
Invece è stata una buona trovata. (Per gli appassionati di storia,
ricordiamo che fu un'idea originariamente proposta da Andrew Koenig.)
Innanzitutto, come dice Nicola, l'adozione di identificativi senza
estensione eliminava il rischio di collisione con eventuali direttive
identiche già in uso nel codice scritto prima dello Standard.
In secondo luogo, gli header standard hanno in sé qualcosa di
intrisicamente speciale, quindi è ragionevole che si sia scelto di
connotarli in modo speciale.
Questa scelta, per altro, contribuisce a sganciare la nozione di
header standard da quella di file. Nessuna implementazione, infatti, è
tenuta a implementare gli header standard come file. Inoltre, se si
fosse voluto scegliere un'estensione, che estensione si sarebbe dovuto
scegliere? ".h", ".hh", ".hpp", ".hxx", "h++"?
Max

caratteri da riempire con una parola di 9 lettere) :)
"genialata".
Tieni presente che le estensioni hanno senso solo per determinati
sistemi operativi.  I file header standard potrebbero benissimo non
essere rappresentati da file su disco, per esempio.



ok.....le vostre risposte mi sembrano convincenti :) W La
standardizzazione