Палитры расположены в Вашем профиле пользователя, в .config/libreoffice3/user/config/
. Кроме того, существует ряд палитр в /opt/libreoffice3.5/presets/config/
. Смотрите для файлов, заканчивающихся .soc
- все те файлы являются палитрами. Я предполагаю, что необходимо будет восстановить standard.soc
в профиле пользователя.
http://www.boost.org/doc/libs/1_39_0/libs/smart_ptr/make_shared.html говорит: «Если вам нужно передать неконстантную ссылку на конструктор T, вы можете сделать это, заключив параметр в вызов boost :: ref. " Другой текст на этой странице, кажется, поддерживает ответ Рюдигера Ханке.
Не могу говорить за авторов функции, но ... вам нужно сделать выбор. Если бы функция использовала неконстантную ссылку, то вы не могли бы передавать константные объекты конструкторам, которые принимают константные ссылки.
По моему опыту, конструкторы, принимающие константные ссылки, гораздо более распространены, чем конструкторы, принимающие изменяемые ссылки.
Конструкторы могут иметь параметры n
, поэтому вы не можете просто предоставить одну перегрузку, но должны учитывать любую комбинацию констант / неконстант, которая приводит к экспоненциальному взрыву перегрузок, которые вам понадобятся, если вы хотите предоставить перегрузки для всех из них. Я думаю, что C ++ 0x и идеальная пересылка должны решить эту проблему.
До тех пор, пока ссылки на rvalue (см. Раздел «Проблема пересылки») не поступят в C ++ 0x, идеальная пересылка практически невозможна. make_shared
просто делает все, что в его силах, с тем, что ему дано.
Вам необходимо определить конструктор копирования.
class Object
{
public:
Object(const Object& original)
{
// Copy original to new object
// The reason for the const is this should not change the original
};
Object(int& i)
{
i = 2;
}
};
Хотя я до сих пор не понимаю, почему boost make_shared требует этого ограничение на меня, я нашел способ обойти это. Если я передам константную ссылку на указатель параметра, я могу изменить указатель. Вот фрагмент кода:
class Object
{
public:
Object(int* const& i)
{
*i = 2;
}
};
int main(int argc, char *argv[])
{
int i = 0;
boost::shared_ptr<Object> obj = boost::make_shared<Object>(&i);
cout << i << "\n";
return 1;
}
Этот работает как шарм. У кого-нибудь есть идеи, почему мне нужно прыгать через эти обручи? Кажется странным, что make_shared налагает на меня это ограничение, хотя я согласен, что в большинстве случаев это, вероятно, плохая идея.
Вы можете исправить это, сделав конструктор объекта явным .