Это действительно возвращение местной аддессы? - PullRequest
0 голосов
/ 02 февраля 2010

У меня есть некоторый код, который создает синхронизированную очередь, которую я использую в классе сбора данных, чтобы сообщить о своих данных. Метод, который создает очереди, выдает предупреждение:

Queue^% DataGatherer::AddOutputQueue()
{
    Queue^ outputQueue = Queue::Synchronized(gcnew Queue);
    AddOutputQueue(outputQueue);
    return outputQueue;
}

1>. \ DataGatherer.cpp (21): предупреждение C4172: возвращение адреса локальной или временной переменной

Это предупреждение, о котором я должен беспокоиться, или я в этом деле в безопасности, и компилятор не понимает, что Queue::Synchronized возвращает Queue^? Код работает нормально, но предупреждения заставляют меня нервничать; -)

1 Ответ

0 голосов
/ 02 февраля 2010

Queue^% указывает дескриптор, передаваемый по ссылке. Однако дескриптор внутри функции - это локальная переменная, которая не может быть передана по ссылке, поскольку она может быть уничтожена после завершения функции. Удалите % из типа возврата, и все в порядке.

Редактировать: Это не значит, что ваш код работает. Это может прекратить делать это в любую минуту.

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