У меня есть частный статический член C++ static класс (очень похож на одноэлементный класс, но устраняет необходимость выделения экземпляра класса, поскольку он выполняется автоматически).Инициализация статических членов класса в функции инициализации
В любом случае, я хочу инициализировать этот статический член. Как правило, один будет идти об этом, выполнив следующую
Example.h
class Example
{
private:
static OtherClass _value;
Example() {}
};
Example.cpp
#include "Example.h"
OtherClass Example::_value(constructor arguments)
Код Сейчас я пишу не допустит этого. По сути, я пишу класс DebugDraw для OpenGL, и класс будет содержать свой собственный статический член для объекта Shader, который создаст шейдер OpenGL. Если я использую вышеуказанный метод, Shader будет создан до инициализации glew, что вызовет некоторые серьезные проблемы.
Это решение, с которым я играю.
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
}
Код, написанный, как это будет компилировать, но это будет иметь желаемый эффект, я ищу (инициализации члена статический класс)? Что означает среднее для статических членов перед функцией инициализации (я действительно намерен разместить там инициализированный bool)?
Благодаря
Вот фактический код, я работаю с.
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, который я пишу. Я просто хочу знать об этом одном. – Underdisc