我有一个class(EAGLView)调用类的成员函数C++没有问题.现在,问题是我需要在C++该类中调用一个objective-C function [context renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer*)self.layer];我在C++语法中无法做到的.
我可以将这个Objective-C调用包装到同一个Objective-C类中,它首先调用C++类,但后来我需要以某种方式调用该方法C++,而我无法弄清楚如何去做.
我试图给一个指向EAGLViewC++成员函数的对象的指针,并EAGLView.h在我的C++类头中包含" " 但我得到了3999个错误..
那么......我该怎么做?一个例子很好..我只发现C了这样做的纯粹例子.
我想知道我是否能以某种方式在C++中进行前/后函数调用.我有一个包含很多函数的包装类,在每次包装函数调用之后我应该调用另一个总是相同的函数.
所以我不想把postFunction()调用放到这样的每一个函数中:
class Foo {
f1();
f2();
f3();
.
.
.
fn();
}
void Foo::f1() {
::f1();
postFunction();
}
void Foo::f2() {
::f2();
postFunction();
}
etc.
Run Code Online (Sandbox Code Playgroud)
相反,当我调用一些Foo的成员函数时,我希望自动调用postFunction.可能吗?这将有助于维护..
假设我有一个C++函数debugPrint(int foo).我怎样才能最方便地从发布版本中删除它?我不想用#ifdef包围每次调试debugPrint,因为它真的很耗时.另一方面,我希望100%确保编译器剥离对该函数的所有调用,并从发布版本中删除函数本身.如果使用函数调用产生的参数调用它,也应该发生剥离.例如,debugPrint(getFoo());. 在这种情况下,我也希望剥离getFoo()调用.我理解函数内联可能是一种选择,但不保证支持内联.
我有这种情况:
{
float foo[10];
for (int i = 0; i < 10; i++) {
foo[i] = 1.0f;
}
object.function1(foo); // stores the float pointer to a const void* member of object
}
object.function2(); // uses the stored void pointer
Run Code Online (Sandbox Code Playgroud)
第二个函数调用中浮点指针的内容是否未知?当我运行程序时,似乎得到了奇怪的结果.但是如果我将float foo [10]声明为const并在声明中初始化它,我会得到正确的结果.为什么会这样?