Как: проверить, если массив <T>^ == nullptr?C ++ / CLI - PullRequest
0 голосов
/ 02 августа 2010

Я сделал довольно простой класс в C ++ / CLI, используя дженерики. Как я могу проверить, равен ли универсальный массив ^ nullptr?

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();
        }
    }
};

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

1 Ответ

2 голосов
/ 02 августа 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...