Короче говоря, сегодня мною был обнаружен баг. Если класс не принадлежит глобальному пространству имен, lupdate отказывается правильно определять контекст.
Т.е., на такой код:
namespace MyNamespace {
QString MyClass::someFunc() const
{
return tr("Test");
}
}
<context>
<name>MyClass</name>
<message>
<location filename="main.cpp" line="13"/>
<source>Test</source>
<translation type="unfinished"></translation>
</message>
</context>
namespace MyNamespace {
QString MyClass::someFunc() const
{
return MyNamespace::MyClass::tr("Test");
}
}
Думаю да.
Всё ничуть не баг, а только синтаксис 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");
}
}
Алексей1153, наверное, вы невнимательно прочитали тему. Естественно, в хидере объявление класса находится в этом же пространстве имен. В данном случае речь идет не об ошибке компиляции (отсутствуют они здесь), а об ошибке утилиты lupdate из инструментария Qt.
Ясно
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)