Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πρόβλημα - operators

Îåêßíçóå áðü ôï ìÝëïò Alexander. Τελευταία δημοσίευση από το μέλος Alexander στις 21-03-2008, 14:31. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  20-03-2008, 14:44 41031

    Πρόβλημα - operators

    Έχω το εξής πρόβλημα:

    Φτιάχνω μια βιβλιοθήκη επίλυσης Constraint Satisfaction Problems. Σαν ιδέα, κάτι σαν αυτό που κάνει η Eclipse. Χοντρικά, υπάρχουν μεταβλητές οι οποίες έχουν κάποιο πεδίο τιμών, και περιορισμοί μεταξύ των μεταβλητών. Για παράδειγμα:

    Χ = [1,2,3,4,5]
    Υ = [1,2,3]

    Μπορούμε να βάλουμε τον περιορισμό Χ = Υ + 3, οπότε θα πάρουμε τις εξής δύο λύσεις:
    Χ = 4, Υ = 1
    Χ = 5 , Υ = 2

    Έχω λοιπόν υλοποιήσει κλάσεις CS_IntVar, CS_Constraint κτλ.
    Θέλω ο προγραμματιστής να μπορεί να δηλώνει μια CS_IntVar "εύκολα", μαζί με ένα περιορισμό, κάτι τέτοιο:

    CS_IntVar X = Y + 3.

    Έχω κάνει overload τον operator+ ως εξής:

    public static CS_IntVar operator +(CS_IntVar Y, int C)
            {
                CS_IntVar var = new CS_IntVar(Y.Problem, Y.min() + C, Y.max() + C);
                var.Problem.add_variable(var);

                //Create the constraint
                var.Problem.add_constraint(new CS_Constr_X_eq_Y_plus_C(var, Y, C));
                return var;
            }

    όπου Y.Problem είναι το πρόβλημα στο οποίο ανήκουν οι μεταβλητές.

    Ως εδώ όλα δουλεύουν μια χαρά. Θέλω όμως, να μπορεί ο προγραμματιστής να "επιβάλλει" ένα περιορισμό ακόμα και αν έχει ήδη δημιουργήσει τις μεταβλητές. Δηλαδή:

    CS_IntVar X = new CS_IntVar(...);
    CS_IntVar Y = new CS_IntVar(...);

    ...

    X = Y + 3.

    Φαντάζομαι ότι ο operator= θα πρέπει να είναι κάποιος άλλος τον οποίο θα κάνω overload. Πώς μπορώ να το πετύχω αυτό;
    Υπάρχει τρόπος να ορίσω τους δικούς μου (καινούριους) τελεστές; (ή να μπορώ να καλώ μια συνάρτηση όπως έναν operator, δηλ x = y func c)
     Γίνεται να ορίσω ένα τελεστή που να επιστρέφει void;

    Ευχαριστώ πολύ!
  •  21-03-2008, 14:20 41044 σε απάντηση της 41031

    Απ: Πρόβλημα - operators

    Σε τί version του framework γράφεις; ( .. για να μη γράψω ένα κατεβατό και να ανακαλύψουμε μετά οτι είμαι .. εκτός θέματος :) )

    Angel
    O:]
  •  21-03-2008, 14:31 41045 σε απάντηση της 41044

    Απ: Πρόβλημα - operators

    .net 3.5 ...
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems