나는 구조체를 정의했습니다 :구조체 초기화/할당
struct float3 {
float x;
float y;
float z;
float3() : x(0), y(0), z(0) {}
float3 (float a, float b, float c) : x(a), y(b), z(c) {}
};
을하지만/초기화 회원에 값을 할당하는 다른 방법을 이해에 올 때 나는 문제가있다. 예 :
//Initialization
float3 3Dvec = {1.0, 1.0, 1.0};
float3 3Dvec2 {1.0, 1.0, 1.0};
float3 3Dvec3 (1.0, 1.0, 1.0);
//Assignment
3Dvec = {2.0, 2.0, 2.0};
3Dvec = float3 (2.0, 2.0, 2.0);
이러한 옵션은 모두 -std = C++ 11에서 작동합니다. 그러나 이전 컴파일러에서 -std = C++ 0x 중괄호 초기화/할당이 작동하지 않습니다. usign braces는 나쁜 습관입니까? 어느 옵션이 익숙해지면 좋을까요?
당신은하지 어떤 중간 지점은 C++ (11) 또는 C++ 03 표준 중 하나에 코드를 작성해야합니다 (이 귀하의 오래된 컴파일러가 될 것 같습니다.) 당신이 여기에 보여주는 것은 좋은 C++ 11 연습처럼 보입니다. – juanchopanza
@ juanchopanza 나는 여기에 동의하지 않을 것이다; C++ 11에서 지원하는 기능을 사용하여 컴파일러를 최대한 활용하십시오. 예를 들어 직장에서 gcc 4.8과 VS 2010을 사용하고 있습니다. VS2010이'constexpr'을 지원하지 않기 때문에 람다, 똑똑한 포인터,'auto'와'move semantics '에서 사임해야합니까? – Angew
@Angew 반 웨이 포인트 컴파일러를 완전히 제어하고 있다면 괜찮습니다. 그렇지 않으면 이식성이 너무 좋지 않습니다. 그것이 내가 얻으려고했던 것입니다. – juanchopanza