2012-03-31 6 views
0

はIタイプのエッジを有していると言ってC++のArrayリテラルキャスティングタイプ(VC++)

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

しかし++ 2010 MSVCの上に、同じコードが発生します

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++コンパイラでこれを行うにはそこに方法は何ですか?

+4

を使用するには、不要なキャストではないですか? – Marlon

+0

ああ、私はちょうどそれを試して、それは動作します。私はG ++をずっと使っていて、他の人がそれをキャスティングしているのを見ているので、それが唯一の選択肢だと思っていました。ありがとう! – uberness132

+1

ええ、キャストは私にも奇妙に見えました。文法は(キャストなしで)K&R Cに戻ってきます。 – DRVic

答えて

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