1

嗨,我正在学习 c++,所以我不确定这是否是我的愚蠢错误。我正在尝试使用 raylib 做一些简单的事情,我试图通过调用类中的方法来简单地清除背景。当我在课堂上尝试这样做时,窗口会可怕地闪烁,有时会冻结。但是当它在 main 内部被调用时,它运行得非常好并且表现得像预期的那样。我以前用很多其他语言编程过,我不太确定为什么它的行为会有所不同。

这是代码:
main.cpp:

#include <iostream>
#include <string>
#include <array>
#include "Viewer.h"
#include <raylib.h>

using namespace std;

#define log(x) std::cout << x << std::endl


int main() {
    int screenWidth = 800;
    int screenHeight = 450;

    InitWindow(screenWidth, screenHeight, "test");

    Viewer* viewer = new Viewer();

    while (!WindowShouldClose()) {
        BeginDrawing();
        //ClearBackground(DARKGRAY);
        //DrawText("Congrats!", 190, 200, 20, LIGHTGRAY);
        //DrawLine

        viewer->draw();
        EndDrawing();
    }

    delete viewer;
    CloseWindow();

    //cin.get();
}

查看器.cpp

#include <raylib.h>

class Viewer {
public:
    void draw() {
        ClearBackground(DARKGRAY);

    }
};

查看器.h

#pragma once

class Viewer {
public:
    void draw(){}
};

额外信息,我正在使用 Visual Studio 2019 和 vckpg 来管理库。

这就是我所看到的: 在此处输入图像描述

4

1 回答 1

3

看起来您正在重新定义您的绘图功能。所以它最有可能在你的标题中调用空的绘制函数定义。

查看器.h

void draw(){} //This is most likely what is being called.
void draw(); //Use this if you want to define it in .cpp

您可以保留 .cpp 定义并使用 void draw();。或者你可以在 header viewer.h 中调用 clear

void draw(){ ClearBackground(DARKGRAY);}

编辑:另外,我以前从未尝试在我的 .cpp 中调用类。所以如果你做.cpp路由,那么你可能还需要把它改成:viewer.cpp

#include "viewer.h"
#include <raylib.h>

void Viewer::draw()
{
    ClearBackground(DARKGRAY);
}

于 2020-08-10T17:55:27.947 回答