Ошибка C ++: ожидается ‘;’ в конце объявления члена

Я создал простую утилиту для сравнения версий на платформе Android с использованием соглашения Semantic Versioning . Поэтому он работает только для строк в формате X.Y.Z (Major.Minor.Patch), где X, Y и Z - целые неотрицательные числа. Вы можете найти его на моей GitHub .

Метод Version.compareVersions (String v1, String v2) сравнивает две строки версии. Он возвращает 0, если версии равны, 1, если версия v1 до версии v2, -1, если версия v1 находится после версии v2, -2, если формат версии недействителен.

-2
задан kmdreko 18 January 2019 в 03:23
поделиться

2 ответа

Опробовал ваш код с Online C ++ Compiler , получил те же ошибки с C++, C++11 и C++14 совместимыми компиляторами, но хорошо скомпилировал с C++17 совместимым компилятором Это означает, что ваш код не соответствует стандартам C ++ до C++17 . Однако, как отмечают другие, код хорошо компилируется на других сайтах онлайн-компиляторов даже с использованием стандартов C++11 и C++14. Поэтому я предполагаю, что ошибки связаны с поддерживаемыми / неподдерживаемыми функциями компиляторов.

0
ответ дан duong_dajgja 18 January 2019 в 03:23
поделиться

Ну, в любом случае, вы не должны инициализировать учеников. Инициализация членов класса должна происходить в конструкторе класса следующим образом:

#include <map>
#include <memory>
#include <iostream>

using namespace std;

class test
{
public:
    test() { member_ = make_shared<map<int, type>>(); }
    ~test() { }
    enum type
    {
        error = 0
    };
private:
    shared_ptr<map<int, type>> member_;
};

int main()
{
    return 0;
}

Это прекрасно компилируется даже в Онлайн C ++ Compiler , который является единственным местом, где нам удается воспроизвести проблему .

0
ответ дан Havenard 18 January 2019 в 03:23
поделиться
Другие вопросы по тегам:

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