standart C++ tipleri, uygun vektörlerin içine klonlanabilir sahipaşağıdaki gibi ifadeler olabilir, böylece, örneğin int veya char
struct STRUCT
{
STRUCT(int a){}
};
STRUCT c = STRUCT(67);
STRUCT d(13);
STRUCT(77);
Soru şudur: neden referans anonim yapı veya sınıf örneklerinden geçebiliriz, ancak standart türleri geçemiyoruz? derleyici bu izin veriyorsa
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' satırınız derlenmemelidir (ilk ile aynı nedenden dolayı). – Mat
'void main()' standart dışıdır. –
Uygun bir uyarı seviyesiyle, uyarı C4239: standart olmayan uzantı kullanılır: 'argüman': 'STRUCT' konumundan 'STRUCT &'; Bir const olmayan başvuru sadece bir lvalue'ye bağlanabilir. '/ W4' kullanıyor olmalısınız. –