我是C ++的新手,偶然发现了以下问题:我有一个带有全静态成员的结构,该结构将模型加载到VAO和VBO(OpenGL)。我想创建一个常量静态对象,该对象存储呈现VAO所需的信息(注意:常量在这里不是问题)。这里的问题是,我必须等待OpenGL上下文的创建,并且之后只能调用loading函数(我的想法是一个init()
函数),但是所有静态变量都必须直接声明! (我也尝试过使用非静态成员创建结构,而只是创建该结构的静态实例,但仍必须在构造函数中定义模型)。任何帮助都会很棒!
编辑:我也意识到C ++可能想完全避免这种情况,所以我不应该试图寻找漏洞。我只是在寻找一种解决方案,该解决方案还可能涉及彻底重组到目前为止已完成的工作。
答案 0 :(得分:0)
您有几种方法
示例:
#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
}