相关疑难解决方法(0)

C/C++宏/模板blackmagic生成唯一名称

宏很好.模板很好.几乎无论它的工作原理都很好.

这个例子是OpenGL; 但该技术是C++特有的,并且不依赖于OpenGL的知识.

精确问题:

我想要一个表达式E; 我不需要指定唯一名称; 这样,在定义E的地方调用构造函数,并在块E的末尾调用析构函数.

例如,考虑:

class GlTranslate {
  GLTranslate(float x, float y, float z); {
    glPushMatrix();
    glTranslatef(x, y, z);
  }
  ~GlTranslate() { glPopMatrix(); }
};
Run Code Online (Sandbox Code Playgroud)

手动解决方案

{
  GlTranslate foo(1.0, 0.0, 0.0); // I had to give it a name
  .....
} // auto popmatrix
Run Code Online (Sandbox Code Playgroud)

现在,我不仅有glTranslate,还有很多其他的PushAttrib/PopAttrib调用.我宁愿不必为每个var提出一个唯一的名称.是否存在涉及宏模板的一些技巧......或者其他会自动创建变量的变量,在定义点调用构造函数; 和块结束时调用的析构函数?

谢谢!

c++ raii c-preprocessor

40
推荐指数
3
解决办法
2万
查看次数

标签 统计

c++ ×1

c-preprocessor ×1

raii ×1