FW: SOLVED:C++ Questions

Marios marios_hellas_23 at yahoo.gr
Thu Nov 27 17:48:43 EET 2003


Δοκίμασα και αυτό που είπες, και δούλεψε. Δεν ξέρω ποια είναι  η
καλύτερη-σωστότερη λύση αλλά και οι δυο κάνουν την δουλεία μου. Θα
χρησιμοποιήσω τον τρόπο void func(const float *const *const * p); για να
αποφύγω το type casting όταν περνάω τον πίνακα σε ένα function, (δε μου
αρέσει ΟΠΤΙΚΑ!!!)
Εσείς τι λέτε?

-----Original Message-----
From: linux-greek-users-bounces at lists.hellug.gr
[mailto:linux-greek-users-bounces at lists.hellug.gr] On Behalf Of Vasilis
Vasaitis
Sent: Wednesday, November 26, 2003 2:27 AM
To: Marios
Cc: linux-greek-users at lists.hellug.gr; 'V13'
Subject: Re: SOLVED:C++ Questions

On Wed, Nov 26, 2003 at 12:19:43AM +0200, Marios wrote:
> 
> Ναι, έχεις δίκιο. Αυτό ήταν.
> Ευχαριστώ πολύ

  Ερμ, όχι ακριβώς, δες παρακάτω.

> Υ.Γ. Για κάποιο τρόπο για την ακρίβεια των float ?
> Όχι όμως με setpressiccion. Νομίζω ότι αυτό απλά τυπώνει στην οθόνη την
> ακρίβεια.

  Αυτό που ρώτησες περί ακρίβειας απλά δε στέκει. Οι float δεν έχουν
συγκεκριμένο αριθμό δεκαδικών ψηφίων, αλλά ψηφίων γενικότερα (με βάση
το δύο πάντα). Δεν είναι τυχαίο ότι λέγονται αριθμοί *κινητής*
υποδιαστολής. Πάντως για την εκτύπωση του αριθμού, η setprecision()
είναι αυτό που θέλεις.

> -----Original Message-----
> From: linux-greek-users-bounces at lists.hellug.gr
> [mailto:linux-greek-users-bounces at lists.hellug.gr] On Behalf Of V13
> Sent: Tuesday, November 25, 2003 11:23 PM
> To: linux-greek-users at lists.hellug.gr
> Cc: Marios
> Subject: Re: C++ Questions
> 
> On Tuesday 25 November 2003 21:29, Marios wrote:
> > Θέλω αυτόν τον πίνακα να τον περάσω σε ένα function αλλά ως const,
δηλαδή
> > να μην μπορεί να αλλάξει μέσα στο function. Όμως όταν κάνω αυτό
> > 
> > func(const float ***array3);
> > Ο compiler λέει ότι δεν μπορεί να μετατρέψει ένα ***float σε const
float*
> > Πώς γίνεται?
> 
> Desto me 2 asterakia.. 
> 
> exeis:
> 
> void func(const float **p);
> 
> int main()
> {
> 	float	**a;
> 
> 	func(a);
> }
> 
> H func perimenei na parei enan pointer se antikeimena toy typoy 
> 'const float *' eno esy stelneis enan pointer se antikeimena toy typoy 
> 'float *' xoris na kaneis kapoio casting... 
> 
> Den einai to idio me to na alazeis to 'float *' se 'const float *'
> 
> Gia ti periptosi soy dokimase na kaneis compile to:
> 
> void func(const float ***a) {a[0][0][0]=0;}
> int main()
> {
> 	float ***a;
> 
> 	func((const float ***)a);
> }
> 
> to opoio einai ayto poy theleis...

  Όχι, δεν είναι αυτό που θέλει. Άμα σου γκαρίζει ο compiler για κάτι
που κάνεις στραβά, το type casting είναι μεν μια λύση που θεραπεύει τα
συμπτώματα, αλλά όχι και την αιτία πίσω από το πρόβλημα. Αν και εδώ ο
φίλος μας δε μας είπε τι ακριβώς θέλει να είναι const και τι όχι,
υποψιάζομαι ότι θέλει κάτι τέτοιο:

void func(const float *const *const * p);

-- 
Vasilis Vasaitis
vvas at hal.csd.auth.gr
+306976604701



-- 
linux-greek-users mailing list -- http://lists.hellug.gr




More information about the Linux-greek-users mailing list