Ошибка при компиляции C4430

#include <iostream>
#include <windows.h>

template<typename Type>
struct MiddleBuffer
{
    Type* S = nullptr;
    int S_size = 0;
    free()
    {
        delete[] S;
    }

};

int main()
{
    return 0;
}

При попытке компиляции ошибка

C4430  missing type specifier - int assumed. Note: C++ does not support default-int

Но когда я убираю функцию free() полность, то всё в порядке, почему?


Ответы (1 шт):

Автор решения: Eoan Ermine

Вы пытаетесь объявить метод free в структуре MiddleBuffer без указания типа возвращаемого значения, что запрещено, на что и жалуется компилятор. Так как ваш метод не возвращает никакого значения, необходимо указать void в качестве типа возвращаемого значения:

#include <iostream>
#include <windows.h>

template<typename Type>
struct MiddleBuffer
{
    Type* S = nullptr;
    int S_size = 0;
    void free()
    {
        delete[] S;
    }

};

int main()
{
    return 0;
}
→ Ссылка