Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
C# Junior
3 / 2 / 1
Регистрация: 09.12.2018
Сообщений: 122
1

Метод в статическом классе не работает

16.09.2019, 12:11. Показов 1441. Ответов 9

Author24 — интернет-сервис помощи студентам
Я создал статический класс для удобной работы с текстурами.
Вот он:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
static class Textures
{
public:
    sf::Texture GrassBlock; // ID = 1
    sf::Texture Dirt; // ID = 2
    sf::Texture Stone; // ID = 3
 
    void Inizialize() // Inizialize All Textures
    {
        GrassBlock.loadFromFile("C:/Games/Minecraft2D/Minecraft2D.Windows/Minecraft2D.Resources/Data/Biomes/Overworld.png", sf::IntRect(0, 0, 16, 16));
        Dirt.loadFromFile("C:/Games/Minecraft2D/Minecraft2D.Windows/Minecraft2D.Resources/Data/Biomes/Overworld.png", sf::IntRect(0, 17, 16, 16));
        Stone.loadFromFile("C:/Games/Minecraft2D/Minecraft2D.Windows/Minecraft2D.Resources/Data/Biomes/Overworld.png", sf::IntRect(17, 0, 16, 16));
    }
};
Вот я запускаю void в main():
C++
1
Textures::Inizialize();
Здесь то он и ругается.
Почему так происходит?

Добавлено через 7 минут
Вот ошибка:
Error 2 error C2761: 'void Textures::Inizialize(void)' : member function redeclaration not allowed C:\Games\Minecraft2D\Minecraft2D.Windows\Minecraft2D\Minecraft2D\Source.cpp 15 1 Minecraft2D
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2019, 12:11
Ответы с готовыми решениями:

Нестатический метод в статическом классе
Возник вопрос, есть такого рода пример: static class staticClass { public void...

Ошибка:метод расширения должен быть определен в статическом классе
Можете найти ошибку ? метод расширения должен быть определен в статическом классе скорее всего...

Ошибки в статическом классе
Есть такой вопрос. Необходимо создать статический класс MyMath, и использовать класс Math для...

Однопоточный таймер в статическом классе
Здравствуйте. Возник вопрос: у меня есть класс, в нем мне нужен таймер, чтобы работал в вызывающем...

9
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
16.09.2019, 12:18 2
Разве static можно использовать перед классом? По-моему, нет.
2
Заблокирован
16.09.2019, 12:19 3
C++
1
static void Inizialize(){...
1
C# Junior
3 / 2 / 1
Регистрация: 09.12.2018
Сообщений: 122
16.09.2019, 17:41  [ТС] 4
Pvt, сейчас попробую...

Добавлено через 6 минут
Ошибка та же.
Вот новый код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
static class Textures
{
public:
    static sf::Texture GrassBlock; // ID = 1
    static sf::Texture Dirt; // ID = 2
    static sf::Texture Stone; // ID = 3
 
    static void Inizialize() // Inizialize All Textures
    {
        GrassBlock.loadFromFile("C:/Games/Minecraft2D/Minecraft2D.Windows/Minecraft2D.Resources/Data/Biomes/Overworld.png", sf::IntRect(0, 0, 16, 16));
        Dirt.loadFromFile("C:/Games/Minecraft2D/Minecraft2D.Windows/Minecraft2D.Resources/Data/Biomes/Overworld.png", sf::IntRect(0, 17, 16, 16));
        Stone.loadFromFile("C:/Games/Minecraft2D/Minecraft2D.Windows/Minecraft2D.Resources/Data/Biomes/Overworld.png", sf::IntRect(17, 0, 16, 16));
    }
};
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
16.09.2019, 18:52 5
Цитата Сообщение от CharlyAB Посмотреть сообщение
static class Textures
убери слово static
должно быть:
C++
1
class Textures
Цитата Сообщение от CharlyAB Посмотреть сообщение
Я создал статический класс
ты сам понимаешь, что несешь?

что именно ты пытался создать?
что такое "статический класс" по твоему?
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
16.09.2019, 19:58 6
Цитата Сообщение от hoggy Посмотреть сообщение
что такое "статический класс" по твоему?
Это фишка C#, там такое есть. ТС, как я понимаю, пробует свои силы на С++.
0
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
16.09.2019, 20:36 7
Цитата Сообщение от insite2012 Посмотреть сообщение
Это фишка C#, там такое есть. ТС, как я понимаю, пробует свои силы на С++.
Все верно. У него в интересах один .NET стоит и большенство тем созданных в разделе шарпа.
0
C# Junior
3 / 2 / 1
Регистрация: 09.12.2018
Сообщений: 122
17.09.2019, 18:55  [ТС] 8
Да. Сейчас попробую убрать слово static...

Добавлено через 2 минуты
Нет, тоже самое. Может надо ещё что-то изменить?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Textures
{
public:
    static sf::Texture GrassBlock; // ID = 1
    static sf::Texture Dirt; // ID = 2
    static sf::Texture Stone; // ID = 3
 
    static void Inizialize() // Inizialize All Textures
    {
        GrassBlock.loadFromFile("C:/Games/Minecraft2D/Minecraft2D.Windows/Minecraft2D.Resources/Data/Biomes/Overworld.png", sf::IntRect(0, 0, 16, 16));
        Dirt.loadFromFile("C:/Games/Minecraft2D/Minecraft2D.Windows/Minecraft2D.Resources/Data/Biomes/Overworld.png", sf::IntRect(0, 17, 16, 16));
        Stone.loadFromFile("C:/Games/Minecraft2D/Minecraft2D.Windows/Minecraft2D.Resources/Data/Biomes/Overworld.png", sf::IntRect(17, 0, 16, 16));
    }
};
Добавлено через 1 минуту
Чисто ради SFML и скорости пишу на C++.
SFML - для моей игры идеальный выбор.
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
17.09.2019, 19:10 9
Лучший ответ Сообщение было отмечено CharlyAB как решение

Решение

Цитата Сообщение от CharlyAB Посмотреть сообщение
Может надо ещё что-то изменить?
вместо вот этого:
Цитата Сообщение от CharlyAB Посмотреть сообщение
Вот я запускаю void в main():
Textures::Inizialize();
ты можешь привести человеческий листинг программы.
что бы было понятно: что, где, и как ты там пытаешься запускать в main()

сейчас есть подозрение, что:
Цитата Сообщение от CharlyAB Посмотреть сообщение
'void Textures::Inizialize(void)' : member function redeclaration not allowed
ты тупо так и записал в main.cpp:

C++
1
2
3
4
5
6
7
8
9
10
//main.cpp
 
#include "textures.h"
 
void Textures::Inizialize(void);
 
int main()
{
    // bla bla bla
}
что конечно же не правильно.
но это лишь предположение.
без моральных исходников тебе к телепатам.
1
C# Junior
3 / 2 / 1
Регистрация: 09.12.2018
Сообщений: 122
17.09.2019, 20:20  [ТС] 10
Мда, я сделал так.
Теперь заработало.
C++ думает что я хочу создать экземпляр или такой же void. А мне нужно вызвать метод.
Всё понятно, спасибо!
0
17.09.2019, 20:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.09.2019, 20:20
Помогаю со студенческими работами здесь

Реализовать интерфейс в статическом классе
Здравствуйте. Собственно вопрос. Есть пара статических классов, которые хочу сделать однотипными....

Рекурсия в замещающем статическом классе
namespace Extension { static class ExtensionClass { public static void...

В классе OnlyData написать метод, который выводит значение переменной i и вызвать этот метод в том же классе
Я конечно понимаю, что задача оч простая, но все же. В классе OnlyData нужно написать метод,...

Массив констант в статическом классе. Как правильно сделать
Добрый день! Есть задача, сделать класс с данными, в котором хранится простой массив с данными и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru