私はC++ 静的クラスのプライベート静的メンバーを持っています(シングルトンクラスに非常に似ていますが、自動的に行われるのでクラスのインスタンスを割り当てる必要はありません)。初期化関数で静的クラスメンバーを初期化する
とにかく、この静的メンバーを初期化したいと思います。一般的に、人は以下の
Example.h
class Example
{
private:
static OtherClass _value;
Example() {}
};
Example.cpp
#include "Example.h"
OtherClass Example::_value(constructor arguments)
私は現在、これを許可しません書いているコードを実行して、これについて行くだろう。基本的にOpenGL用のDebugDrawクラスを作成しています。このクラスには、OpenGLシェーダを作成するShaderオブジェクト用の独自の静的メンバーが含まれています。上記の方法を使用すると、グリップが初期化される前にシェイダーが構築され、大きな問題が発生します。
これは私が使用している解決策です。このように書か
Example.h
class Example
{
public:
Initialize();
private:
static OtherClass _value;
Example(){}
};
Example.cpp
#include "Example.h"
Example::Initialize()
{
OtherClass _value(constructor arguments)
// Other code that I will need to add
}
コードがコンパイルされますが、それは私が(静的クラスのメンバを初期化する)を探しています所望の効果を持っているのだろうか? Initialize関数が呼び出される前の静的メンバーの平均は何ですか(初期化されたブールをそこに置くつもりです)。
ありがとうございました
私が実際に使用しているコードは次のとおりです。
DebugDraw.h
#ifndef DEBUGDRAW_H
#define DEBUGDRAW_H
#include <GLM\glm\vec4.hpp>
#include "Shader.h"
class DebugDraw
{
public:
static void Initialize();
static void Line();
static void Triangle();
static void Box();
static void Color();
private:
static glm::vec4 _color;
static Shader _shader;
DebugDraw() {}
};
#endif // !DEBUGDRAW_H
DebugDraw.cpp
#include "DebugDraw.h"
void DebugDraw::Initialize()
{
glm::vec4 _color(1.0f, 1.0f, 1.0f, 1.0f);
Shader _shader("Shader/debug.vert", "Shader/debug.frag");
_shader.Use();
}
^これはコンパイルん^初期化関数が呼び出される前に、静的メンバーの平均値を何
本当にコンパイルできますか?クラス宣言の終わりの後に ';'がありません。 – Raindrop7
yeaymこのコードは一例です。私は書いているOpenGLコードを投稿したくなかった。私はちょうどこの1つについて知りたいです – Underdisc