Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Баг в lupdate в 4.6.X
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt инструментарий
inviZ
Короче говоря, сегодня мною был обнаружен баг. Если класс не принадлежит глобальному пространству имен, lupdate отказывается правильно определять контекст.
Т.е., на такой код:

namespace MyNamespace {

QString MyClass::someFunc() const
{
    return tr("Test");
}

}


Он ругается подобным образом:
C:/Projects/Temporary/TempProject9/main.cpp:13: Qualifying with unknown namespace/class ::MyClass

В результате в TS-файле получаем следующее:
<context>
    <name>MyClass</name>
    <message>
        <location filename="main.cpp" line="13"/>
        <source>Test</source>
        <translation type="unfinished"></translation>
    </message>
</context>


Хотя должно быть, конечно же "<name>MyNamespace::MyClass</name>". Естественно, такой файл перевода оказывается "нерабочим". Пока решил эту проблему так - использую lupdate из 4.5. Хотя, конечно, можно решить проблему, полностью специфицируя контекст, т.е.:

namespace MyNamespace {

QString MyClass::someFunc() const
{
    return MyNamespace::MyClass::tr("Test");
}

}

Но я думаю, понятно, что не самый удобный вариант.
В общем, стоит ли отправить багрепорт?
molchanoviv
Думаю да.
Алексей1153
Всё ничуть не баг, а только синтаксис C++

Студия, кстати, так же реагирует. А вот если объявление класса поместить в это же пространство имён, то всё хорошо
namespace MyNamespace
{
    class MyClass
    {
        int someFunc() const;
    };
}

namespace MyNamespace
{

    int MyClass::someFunc() const
    {
        return 0;
    }
}


а вот это
Цитата
namespace MyNamespace
{

QString MyClass::someFunc() const
{
    return MyNamespace::MyClass::tr("Test");
}

}


И есть как раз глюк. Даже вот так с ходу не могу понять, что тут подумал компилятор ))
inviZ
Алексей1153, наверное, вы невнимательно прочитали тему. Естественно, в хидере объявление класса находится в этом же пространстве имен. В данном случае речь идет не об ошибке компиляции (отсутствуют они здесь), а об ошибке утилиты lupdate из инструментария Qt.
Алексей1153
Ясно :b_flag:
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.