単純な C++ クラスで奇妙な動作に遭遇しました。
classA.h
class A
{
public:
A();
~A();
static const std::string CONST_STR;
};
classA.cpp
#include "classA.h"
#include <cassert>
const std::string A::CONST_STR("some text");
A::A()
{
assert(!CONST_STR.empty()); //OK
}
A::~A()
{
assert(!CONST_STR.empty()); //fails
}
main.cpp
#include <memory>
#include <classA.h>
std::auto_ptr<A> g_aStuff;
int main()
{
//do something ...
g_aStuff = std::auto_ptr<A>(new A());
//do something ...
return 0;
}
アクセス違反などは予想できますが、静的な const 文字列の内容が変更される可能性があるとは予想していません。ここにいる誰かが、そのコードで何が起こっているのかをよく説明していますか?
ありがとう、ノーバート