我想用compound literal
åˆå§‹åŒ–Matrix4
类型的å˜é‡ã€‚æˆ‘çš„æž„é€ å‡½æ•°éœ€è¦float*
。
所以这是我的åˆå§‹åŒ–线:
const Matrix4 Matrix4::identity ( (float[16]) { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f } );
这似乎应该å¯è¡Œï¼Œä½†Visual Studio称它是“éžæ ‡å‡†æ˜¾å¼ç±»åž‹è½¬æ¢â€ã€‚但我想ä¿ç•™â€œå•è¡Œåˆå§‹åŒ–â€ï¼Œé™¤éžçœŸçš„有更方便的方å¼ã€‚
ç”案 0 :(得分:4)
您使用ä¸ç›¸å…³çš„é™æ€æˆå‘˜è¯¦ç»†ä¿¡æ¯ä½¿é—®é¢˜è¿‡äºŽå¤æ‚。事实上,这个问题å¯ä»¥å¾ˆå®¹æ˜“地å¤åˆ¶ä¸ºï¼š
void foo(float* );
void k() {
foo((float[4]){1, 2, 3, 4});
}
这里有一个为C99定义的å¤åˆæ–‡å—'ã€‚å®ƒåœ¨æ ‡å‡†çš„C ++ä¸ä¸å¯ç”¨ï¼Œä½†æ˜¯ä¸€äº›ç¼–译器具有支æŒå®ƒçš„扩展。从问题本身æ¥çœ‹ï¼Œä¼¼ä¹ŽMSVC也支æŒè¿™ç§æ‰©å±• - 它在消æ¯ä¸æ到了这一点 - 但是ä¸å…许代ç 。å¯èƒ½æœ‰ä¸€ç§æ–¹æ³•å¯ä»¥åœ¨MSVC上明确å¯ç”¨å®ƒï¼Œä½†æˆ‘ä¸æ˜¯è¿™æ–¹é¢çš„专家。
在这ç§æƒ…况下,我真的没有ç†ç”±å†™å‡ºä¸ç¬¦åˆè§„范的代ç ï¼Œå› æ¤æˆ‘会æ倡å对它。
编辑åŽå›žç”é—®é¢˜ï¼Œå®žé™…ä¸Šæœ‰å‡ ç§æ–¹æ³•å¯ä»¥å®žçŽ°å•çº¿å‘¼å«ã€‚å¯ä»¥ä½¿å‡½æ•°æŽ¥å—std::initializer_list<float>
表示å¯å˜æ•°é‡çš„å‚数,std::array<float, 16>
表示固定数é‡çš„å‚数,或gsl::span
。