Static1.hpp静的変数を別の静的変数で初期化するにはどうすればよいですか?
#include <string>
class Static1
{
public:
static const std::string my_string;
};
Static1.cpp
#include "Static1.hpp"
const std::string Static1::my_string = "aaa";
Static2.hpp
#include <string>
class Static2
{
public:
static const std::string my_string;
};
Static2.cpp
#include "Static2.hpp"
const std::string Static2::my_string = Static1::my_string;
main.cppに
#include "Static2.hpp"
#include <iostream>
int main(argc int, char** argv)
{
cout << to_string(Static2::my_string == "aaa") << endl;
return 0;
}
私は私のCMakeLists.txtにadd_executable(printMyString main.cpp Static2.cpp Static1.cpp)
を置く場合add_executable(printMyString main.cpp Static2.cpp Static1.cpp)
がそう(維持するために私のコードを簡単にするために私に
1
の期待される動作を与えながら、私は
0
を取得私がソースファイルを列挙する順序を追跡する必要はありません)、私は動作を得ることができる方法はありますか?Static2::my_string == "aaa"
?
。私はそれがいくつかのCのパラダイムだと信じています。 – Ron
「静的初期化順序の失敗」についてお読みください。 – nwp
あなたは本当に同じ値を持つ静的変数を必要とします(私は彼らが何とかconstなのです)? – user463035818