Задать вопрос
@Hocksten

Как подключить класс к форме — C++/CLI?

есть файл windowopen.h

#include <SFML\Graphics.hpp>
#include <string>
 
class WindowOpen{
public:
    int win_width, win_height;
    WindowOpen(int WINW, int WINH)
    {
        win_width = WINW;
        win_height = WINH;
        sf::RenderWindow window(sf::VideoMode(win_width, win_height), "Test");  
};


Как можно реализовать открытие окна по кнопке?
Главный файл MyForm.h
#include "windowapp.h"
#pragma once

namespace gameengine {

	using namespace System;
        ......................

public: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    }
            WindowOpen w(640, 480);
    };
}


Получаю ошибку
Ошибка  1   error C2059: синтаксическая ошибка: константа

Только изучаю C++, прошу помощи :)
  • Вопрос задан
  • 1544 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Nipheris
@Nipheris Куратор тега C++
1) в первом блоке кода у вас, возможно, пропущена закрывающая фигурная скобка, проверьте;
2) если вы создаете окно, то скорее всего оно у вас будет жить относительно долго, и его временем жизни нужно будет управлять вручную. Это значит, вам пора разобраться, что такое указатели и ручное управление памятью/временем жизни объекта (т.е. WindowOpen w(640, 480) скорее всего не годится)
3) сразу учитесь давать адекватные имена сущностям в программе. WindowOpen это имя для функции, но не для класса, возможно вы имели в виду просто Window.
4) по возможности не используйте C++/CLI как учебный язык. Это стыковочный диалект C++ для реализации взаимодействия систем поверх .net и нативных - в нем может запутаться даже бывалый C++ разработчик, новичкам даже смотреть на него нельзя - убивает душу. То, что MS по дефолту предлагает проект в студии - это так исторически сложилось. MS сейчас вообще ничего не предлагает адекватного для десктопа под C++, так что мой вам совет: либо C# + WPF/WinForms, либо Qt + C++. SFML вроде бы нормально работает в паре с Qt.
Ответ написан
Комментировать
@Hocksten Автор вопроса
Благодарю за ответ, решил проблему с помощью
WindowOpen ^ w = gcnew WindowOpen(r, s);
А по поводу C++ CLI, более по душе, чем QT, а в сторону C# не хочу смотреть, потому как нужен кроссплатформенный язык)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы