Приведение литерала массива в C ++ к типу (VC ++) - PullRequest
0 голосов
/ 31 марта 2012

Скажем, у меня есть тип края:

struct edge
{
    long long weight;
    int dest;
    inline bool operator<(const edge& other) const
    {
        return weight > other.weight;
    }
};

В G ++ 4.1.2 (CentOS) я могу смело делать:

edge e = (edge){0, 1};

Но на MSVC ++ 2010 тот же код вызывает:

test.cpp(57) : error C2059: syntax error : '{'
test.cpp(57) : error C2143: syntax error : missing ';' before '{'
test.cpp(57) : error C2143: syntax error : missing ';' before '}'

Есть ли способ сделать это в компиляторе MSVC ++?

1 Ответ

0 голосов
/ 01 апреля 2012

Я предлагаю иметь конструктор:

struct edge  {
   long long weight;
   int dest;
   edge(long long w, int d): weight(w), dest(d) {};
   inline bool operator<(const edge& other) const {
    return weight > other.weight;
   }
};

, затем использовать

edge e (0,1);
...