Как создать статический класс в C++?

204
20 декабря 2021, 06:10

Я только начал изучать C++, и хотел сделать статический класс чтобы к его методам можно было обратиться, не создавая объект smartRandom:

smartRandom.h:

namespace sr
{
    class smartRandom
    {
    public:
        static void init();
        static int random(int from, int to);
    };
};

smartRandom.cpp:

namespace sr
{
    class smartRandom
    {
        static void init()
        {
            srand(time(NULL));
        }
        static int random(int from, int to)
        {
            return from + rand() % (to - from + 1);
        }
    };
}

В программе вызываю класс так:

sr::smartRandom::random(3, 10);

Но мне выходит 4 ошибки: Я попробовал исправить но появилось это:

Answer 1

Вы переопределяете class smartRandom в smartRandom.cpp. Определения методов и статических функций класса осуществляются с помощью операции разрешения контекста. Вот так:

smartRandom.h

#ifndef SMART_RANDOM_H_
#define SMART_RANDOM_H_
#include <cstdlib>
#include <ctime>
namespace sr
{
    class smartRandom
    {
    public:
        static void init();
        static int random(int from, int to);
    };
};
#endif

smartRandom.cpp

#include "smartRandom.h"
namespace sr
{
    void smartRandom::init()
    {
        srand(time(NULL));
    }
    int smartRandom::random(int from, int to)
    {
        return from + rand() % (to - from + 1);
    }
}

Файл, где у Вас main

#include "smartRandom.h"
int main()
{
    sr::smartRandom::random(3, 10);
    return 0;
}
READ ALSO
Callback функции в C++

Callback функции в C++

Я хотел бы удостовериться, что пишу все правильно и адекватноПодскажите пожалуйста какие ошибки присутствуют в коде и желательно советы,...

189
Ввожу русские буквы, выводит непонятные символы C++

Ввожу русские буквы, выводит непонятные символы C++

Написал программку для расставления букв в алфавитном порядке в любом словеПоставил setlocale(0, "rus")

111
C++: перевод простой дроби в десятичную

C++: перевод простой дроби в десятичную

Подскажите пожалуйста с алгоритмом:

125