2010-08-02 2 views
0

Я сделал довольно простой класс в C++/CLI с использованием дженериков. Как проверить, равен ли общий массив^равным nullptr?How-To: проверьте, существует ли массив <T>^== nullptr? C++/CLI

generic<class T> where T: IGenericContainable 
public ref class FIBEXGenericContainer abstract : AbstractFIBEXNode 
{ 
public: 
    property array<T>^ Children; 

public: 

    property T default[String^] 
    { 
     T get(String^ aID) 
     { 
      if(nullptr == Children) 
       Console::WriteLine("this won't happen, because I get an NullReferenceException in the above line"); 

      for each(T tObj in Children) 
      { 
       if(aID == tObj->ID) 
        return tObj; 
      } 

      return T(); 
     } 
    } 
}; 

Спасибо, ребята!

ответ

2

звучит как this есть null, не this->Children. Невиртуальную функцию иногда можно вызывать на нулевой ссылке, с результатами, которые вы видите (сбой происходит внутри функции, а не в вызывающем).

+0

Привет, Бен, благодарю вас за этот замечательный совет. Я бы никогда не подумал об этом. Теперь, когда я быстро посмотрел с помощью google, я намного мудрее – yas4891