构造函数不会运行指向对象的指针

时间:2014-11-28 07:48:34

标签: c++ casting

我收到以下错误:

  

错误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实例重写为指向该类对象的指针时,它出现了。编译器不会运行构造函数。有人知道为什么我有一个指针到类的对象对构造函数很重要,以及如何纠正这个问题?

非常感谢!

1 个答案:

答案 0 :(得分:3)

context_init* Display(1280, 720, "Test_Window");是一种格式错误的尝试,它将堆栈分配的实例分配给指针而不使用" address-of"操作

可能你的意思

  1. context_init Display(1280, 720, "Test_Window");
    1. context_init* Display = new context_init(1280, 720, "Test_Window");
    2. 如果您使用new,请确保将其与delete进行平衡,否则您将泄漏内存。在(1)的情况下,当Display超出范围时,将调用析构函数。在(2)的情况下,当对象为delete时调用析构函数d:无论哪种方式,你都不需要尝试明确地调用析构函数,这就是我认为的对象。重新尝试使用Display->~context_init();