У меня также были некоторые проблемы с локальными файлами, и это помогло моей ситуации.
Я храню свои статические файлы на S3, но вы можете настроить URL-адрес вашего изображения.
if DEBUG == False:
STATICFILES_LOCATION = 'static'
STATIC_URL = "//%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, STATICFILES_LOCATION)
MEDIAFILES_LOCATION = 'media'
MEDIA_URL = "//%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, MEDIAFILES_LOCATION)
else:
MEDIA_URL = '/media/'
STATIC_URL = '/static/'
Это похоже на повышение:: касательно, насколько я знаю. В основном, ссылка, которая может быть скопирована. Очень полезный при привязке с функциями, куда необходимо передать параметры ссылкой.
, Например (использующий синтаксис повышения):
void Increment( int& iValue )
{
iValue++;
}
int iVariable = 0;
boost::function< void () > fIncrementMyVariable = boost::bind( &Increment, boost::ref( iVariable ));
fIncrementMyVariable();
Эта статья доктора Dobbs имеет некоторую информацию
Hope, это правильно, и полезно. :)
reference_wrapper
- чрезвычайно полезная и простая библиотека. Внутри reference_wrapper
хранится указатель на T. Но интерфейс, который он предоставляет, не содержит нотации указателя.
reference_wrapper
может храниться в контейнере STL. reference_wrapper
, указатели на ссылки и T-> f ()
на Tf ()
везде, где возможно (конечно, указатели нуждаются в быть сохраненными для удаления объектов, выделенных кучей, но для управления памятью очень полезны контейнеры указателя ускорения). Пример:
class A
{
//...
};
class B
{
public:
void setA(A& a)
{
a_ = boost::ref(a); // use boost::cref if using/storing const A&
}
A& getA()
{
return a_;
}
B(A& a): a_(a) {}
private:
boost::reference_wrapper<A> a_;
};
int main()
{
A a1;
B b(a1);
A a2;
b.setA(a2);
return 0;
}
Здесь я использовал ускоренную реализацию ссылочной оболочки, но в стандарте C ++ 0x она тоже будет. См. Также http://aszt.inf.elte.hu/~gsd/halado_cpp/ch11.html#Bind-ref