将C ++中的Array Literal转换为类型(VC ++)

时间:2012-03-31 00:12:36

标签: c++ visual-c++ gcc g++

说我有类型边缘:

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 :(得分:0)

我建议有一个构造函数:

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);