標準C++のタイプは、ctorsを持っているあなたのような表情を持つことができますので、このようなintやcharとして
struct STRUCT
{
STRUCT(int a){}
};
STRUCT c = STRUCT(67);
STRUCT d(13);
STRUCT(77);
質問は次のとおりです。参照匿名構造またはクラスインスタンスを渡すことはできますが、標準タイプを渡すことができないのはなぜですか?
struct STRUCT
{
STRUCT(int a){}
};
void func1(int& i){}
void func2(STRUCT& s){}
void func3(int i){}
void func4(STRUCT s){}
void main()
{
//func1(int(56)); // ERROR: C2664
func2(STRUCT(65)); // OK: anonymous object is created then assigned to a reference
func3(int(46)); // OK: anonymous int is created then assigned to a parameter
func4(STRUCT(12)); // OK: anonymous object is created then assigned to a parameter
}
あなた 'func2'ラインは、(最初のと同じ理由で)コンパイルべきではありません。 – Mat
'void main()'は非標準です。 –
適切な警告レベルを指定すると、警告C4239が表示されます:非標準拡張子が使用されました: '引数': 'STRUCT'から 'STRUCT'への変換;非const参照は左辺値にのみ結合することができる。 '/ W4'を使うべきです。 –