小编Mic*_*LoL的帖子

C++中可重用的成员函数

我正在使用这个成员函数来获取指向对象的指针:

    virtual Object* Create()
    {
        return new Object();
    }
Run Code Online (Sandbox Code Playgroud)

它是虚拟的,所以我可以得到指向派生对象的指针,现在我这样做:

    virtual Object* Create()
    {
        return new Foo();
    }
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我想做这样的事情以防止任何错误并使其更容易,这样我就不必每次创建新类时都重写该函数:

    virtual Object* Create()
    {
        return new this();
    }
Run Code Online (Sandbox Code Playgroud)

我试图找到如何做到这一点,但找不到任何有用的东西,也许这是不可能的。我在 C++17 中使用 MSVC 编译器

c++ type-traits visual-c++ c++17

6
推荐指数
1
解决办法
107
查看次数

C++ 如何进行精确的帧率限制?

我正在尝试使用 C++ 创建一个游戏,我想为 fps 创建限制,但我总是得到比我想要的更多或更少的 fps。当我查看具有 fps 限制的游戏时,它总是精确的帧速率。尝试使用Sleep() std::this_thread::sleep_for(sleep_until). 例如Sleep(0.01-deltaTime),获得 100 fps 但最终得到 +-90fps。当任何睡眠不精确时,这些游戏如何如此精确地处理 fps?我知道我可以使用无限循环来检查时间是否过去,但它使用了 CPU 的全部功率,但我想在没有 VSync 的情况下通过此限制减少 CPU 使用率。

c++ windows opengl glfw

5
推荐指数
2
解决办法
2580
查看次数

对象删除后对成员变量的引用是否会损坏?

我可以ref在删除对象后使用,如本例所示还是不安全?

struct Object
{
    int value;
};

void function()
{
    Object* object = new Object();
    int& ref = object->value;
    delete object;
    ref = 50;
}
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++

0
推荐指数
2
解决办法
53
查看次数

标签 统计

c++ ×3

visual-c++ ×2

c++17 ×1

glfw ×1

opengl ×1

type-traits ×1

windows ×1