我对C ++很陌生,偶然发现了以下问题:我有一个带有全静态成员的结构,它将模型加载到VAO和VBO(OpenGL)。我想创建一个常量静态对象,它存储渲染VAO所需的信息(注意:常量不是这里的问题)。这里的问题是我必须等待创建一个OpenGL上下文,之后才能调用加载函数(我的想法是一个init()
函数),但所有静态变量都必须直接声明! (我也尝试使用非静态成员创建struct,只创建该结构的静态实例化,但仍然必须在构造函数中定义模型)。任何帮助都会很棒!
编辑:我也意识到C ++可能想要完全避免这种情况,所以我不应该试图找到漏洞。我只是在寻求一个解决方案,这个解决方案也可能涉及到目前为止我完成的重组。
你有几种方法可以做
示例:
#include <iostream>
struct S1 {
S1(int v) : _v(v) {}
int _v;
};
struct S2 {
int _v;
void set(int v) { _v = v; }
};
const S1 * G1;
S2 G2;
int main()
{
int v;
std::cin >> v;
// now we are able to set the structs
G1 = new S1(v);
G2.set(v); // note G2._c is public and can be set directly too
// etc
}