Я создал простую утилиту для сравнения версий на платформе 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, если формат версии недействителен.
Опробовал ваш код с Online C ++ Compiler , получил те же ошибки с C++
, C++11
и C++14
совместимыми компиляторами, но хорошо скомпилировал с C++17
совместимым компилятором Это означает, что ваш код не соответствует стандартам C ++ до C++17
s>. Однако, как отмечают другие, код хорошо компилируется на других сайтах онлайн-компиляторов даже с использованием стандартов C++11
и C++14
. Поэтому я предполагаю, что ошибки связаны с поддерживаемыми / неподдерживаемыми функциями компиляторов.
Ну, в любом случае, вы не должны инициализировать учеников. Инициализация членов класса должна происходить в конструкторе класса следующим образом:
#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 , который является единственным местом, где нам удается воспроизвести проблему .