1 Востаннє редагувалося koala (07.07.2020 10:53:54)

Тема: Недозволений зовнішній символ

Добрий день. друзі. Зараз я вивчаю бібліотеку SFML, і хочу зробити створення вікна компактно, пересмістивши усі методи в клас Window. Але після того. як я усе виконав у мене видає ромилки:

текст помилок офтопною мовою

    1)     неразрешенный внешний символ ""private: static class sf::RenderWindow Window::window" (?window@Window@@0VRenderWindow@sf@@A)"    ;
         2)    неразрешенный внешний символ ""private: static class sf::Event Window::event" (?event@Window@@0VEvent@sf@@A)";

        Якщо у вас є час на це і вам не складно. то порекомендуйте щось. Дякую за допомогу.

//main.cpp
#include"Window.h"

int WIDTH = 1280;
int HEIGHT = 720;
const std::string title = "title";
int main()
{
    Window::CreateWindow(WIDTH, HEIGHT, title);
    while (Window::IsOpen())
    {
        while (Window::PollEvent())
        {
            Window::Events();
        }
        Window::Display();
    }
    return 0;
}
//Window.h

#pragma once
#include<SFML/Graphics.hpp>
class Window
{
public:
    static void CreateWindow(int width,int height,std::string title);
    static bool IsOpen();
    static bool PollEvent();
    static void Events();
    static void Display();
private:
    static sf::RenderWindow window;
    static sf::Event event;
};
//Window.cpp

#include "Window.h"
#include<SFML/Graphics.hpp>
void Window::CreateWindow(int width,int height,std::string title)
{
    window.setSize(sf::Vector2u(width, height));
    window.setTitle(title);
}
bool Window::IsOpen()
{
    return window.isOpen();
}
bool Window::PollEvent()
{
    return window.pollEvent(event);
}
void Window::Events()
{
    if (event.type == sf::Event::Closed)window.close();
    if (event.key.code == sf::Keyboard::Escape)window.close();
}
void Window::Display()
{
    window.display();
}

2

Re: Недозволений зовнішній символ

Статичні змінні треба проголошувати двічі: один раз у гедері і другий - у .cpp. Бо гедер може потрапити в різні файли, і якщо на кожен гедер буде створюватися свій екземпляр цих змінних, то сенс статики пропаде.
До речі, а який сенс тут усе статичним робити? Додайте конструктор (замість CreateWindow) і створюйте об'єкт в main.

Подякували: SideShowBoBGOT, leofun012

3

Re: Недозволений зовнішній символ

Дякую тобі, koala. Як завжди рятуєш.

4

Re: Недозволений зовнішній символ

Прихований текст
koala написав:

гедері

нарешті хтось це сказав

Подякували: SideShowBoBGOT1

5

Re: Недозволений зовнішній символ

Прихований текст
FakiNyan написав:
Прихований текст
koala написав:

гедері

нарешті хтось це сказав

Гедерна рівність

Подякували: SideShowBoBGOT1

6 Востаннє редагувалося P.Y. (07.07.2020 12:26:22)

Re: Недозволений зовнішній символ

Прихований текст
FakiNyan написав:
Прихований текст
koala написав:

гедері

нарешті хтось це сказав

Вчора — хедер, сьогодні — гедер, завтра (з урахуванням ґіперкорекції) — ґедер...
От чому не сказати зрозумілою українською мовою «заголовок», замість плодити варваризми?

Подякували: SideShowBoBGOT, wander, grinyuk3093

7

Re: Недозволений зовнішній символ

*THUMBSUP* інклюд він і є інклюд  :D

Подякували: SideShowBoBGOT1

8

Re: Недозволений зовнішній символ

Прихований текст
Droid 77 написав:

*THUMBSUP* інклюд він і є інклюд  :D

Інклуд, маєте на увазі? А в когось, може, там і інклад завівся...

Подякували: SideShowBoBGOT1

9

Re: Недозволений зовнішній символ

До речі, unresolved - це нерозв'язаний, а не "недозволений". Не перекладайте англійську термінологію через російську.

Подякували: FakiNyan1