我收到以下错误:
错误C2440:'初始化' :无法转换为' int'到' context_init *' 从整数类型到指针类型的转换需要reinterpret_cast,C风格的转换或函数式转换
关于以下代码:
int main()
{
context_init* Display(1280, 720, "Test_Window");
glfwSetKeyCallback(Display.window, key_callback);
while (!glfwWindowShouldClose(Display->window))
{
glfwPollEvents();
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(Display->window);
}
Display->~context_init();
return 0;
}
问题出现在程序的3d行的构造函数中,当我将context_init实例重写为指向该类对象的指针时,它出现了。编译器不会运行构造函数。有人知道为什么我有一个指针到类的对象对构造函数很重要,以及如何纠正这个问题?
非常感谢!
答案 0 :(得分:3)
context_init* Display(1280, 720, "Test_Window");
是一种格式错误的尝试,它将堆栈分配的实例分配给指针而不使用" address-of"操作
可能你的意思
context_init Display(1280, 720, "Test_Window");
或
context_init* Display = new context_init(1280, 720, "Test_Window");
如果您使用new
,请确保将其与delete
进行平衡,否则您将泄漏内存。在(1)的情况下,当Display
超出范围时,将调用析构函数。在(2)的情况下,当对象为delete
时调用析构函数d:无论哪种方式,你都不需要尝试明确地调用析构函数,这就是我认为的对象。重新尝试使用Display->~context_init();