class CCookie
{ private:
...............
void Set(const std::string &Name,const std::string &Value,const long MaxAge=whileOpen)
{ if (Value.size()>0 && MaxAge)
CookieMap[Name]=Value;
else { StrMap::iterator i=CookieMap.find(Name);
if (i!=CookieMap.end()) CookieMap.erase(i);
}
OutStr+="Set-Cookie: "+Name+'='+(Value.size()
?(Name==LoginMark() || Name==PasswordMark())
?CCript::Coder(rand(),Value):Value:"x")
+(MaxAge==whileOpen?_:"; Max-Age="+inttostr(MaxAge))
+'\n';
RefreshMap[Name]=true;
}
public:
static const long week4=3600*24*7*4;
static const long year4=week4*52;
static const long whileOpen=-1;
................
} Cookie;
"Раньше все работало".
После замены FreeBSD 6 на 7 перестала компилироваться программуля. g++ index.cpp -oindex.cgi при линковке сообщает об отсутствии CCookie::week4, CCookie::year4 и CCookie::whileOpen.
Пришлось константы вынести за пределы класса.
Язык знаю плохо и в компиляции не разбираюсь, но очень хочется докопаться до причин.
Спасибо.