pointers passaggio - Come eseguire il cast / convertire il puntatore in riferimento in C++




parametri per (4)

Come posso passare un puntatore ( Object *ob ) a una funzione che prototipo è void foo(Object &) ?


Answers

Esempio completo per il cast del puntatore all'oggetto

Demo online

class myClass
{
  public:
  void sayHello ()
  {
    cout << "Hello";
  }
};

int main ()
{
  myClass* myPointer;
  myClass myObject = myClass(* myPointer); // Cast pointer to object
  myObject.sayHello();

  return 0;
}

Chiamalo così:

foo(*ob);

Nota che non c'è il casting in corso qui, come suggerito nel titolo della tua domanda. Tutto ciò che abbiamo fatto è de-referenziare il puntatore all'oggetto che poi passiamo alla funzione.


foo(*ob);


Di seguito è riportata una buona classe di utilità per Enums

public static class EnumHelper
{
    public static int[] ToIntArray<T>(T[] value)
    {
        int[] result = new int[value.Length];
        for (int i = 0; i < value.Length; i++)
            result[i] = Convert.ToInt32(value[i]);
        return result;
    }

    public static T[] FromIntArray<T>(int[] value) 
    {
        T[] result = new T[value.Length];
        for (int i = 0; i < value.Length; i++)
            result[i] = (T)Enum.ToObject(typeof(T),value[i]);
        return result;
    }


    internal static T Parse<T>(string value, T defaultValue)
    {
        if (Enum.IsDefined(typeof(T), value))
            return (T) Enum.Parse(typeof (T), value);

        int num;
        if(int.TryParse(value,out num))
        {
            if (Enum.IsDefined(typeof(T), num))
                return (T)Enum.ToObject(typeof(T), num);
        }

        return defaultValue;
    }
}




c++ pointers casting reference type-conversion