는,이 코드 조각을 :typedef로 만들 유형을 선언하려면 어떻게해야합니까? 예를 들어
class Foo;
class Something {
Foo *thing;
};
typedef std::vector<Something> Foo;
이 컴파일되지 않습니다는 typedef
가 공격 할 때 Foo
이미 유형이기 때문이다. 그러나, 나는 그것이 나의 유스 케이스를 보여줄 것이라고 생각한다; 나는주기적인 의존성을 가지고 있고 다른 것을 수행하기 위해 하나를 필요로하지만, (현재) 하나는 typedef이다. 나는 모든 my_foo.inside.some_method()
에 inside
을 기억해야하기 때문에 나는
class Foo {
std::vector<Something> inside;
}
같은 것을 쓰고 싶지 않은 것입니다. 또한 많은 상용구가 있기 때문에 std::vector<Something>
에 래퍼를 작성하는 것을 피하고 싶습니다.
typedef
으로 정의하는 유형을 전달하려면 어떻게해야합니까? 또는 위의 솔루션 중 하나를 사용하여 없이없이 순환 종속성 문제를 어떻게 해결할 수 있습니까? 전혀 가능합니까?
"아직 typedef
을 (를) 아직 선언하지 않은 유형으로 할 수 있습니까?"라는 질문을하지 않습니다. "어떻게 typedef
을 사용하여 이전에 선언 된 유형을 정의 할 수 있습니까?"라고 묻습니다.
class Something;
typedef std::vector<Something> Foo;
class Something { Foo *thing; };
당신이 C++ 11 버전 이상을 사용하는 경우가하는 typedef
대신에 using
선언을 사용합니다 :
class Something;
using Foo = std::vector<Something>;
class Something { Foo *thing; };
을 그리고 그게 다야
용어 중 하나라도 사용하지 않으면 사과드립니다. 나는 결코 그것을 정말로 배웠다. 기분이 틀릴 것 같은 가설이나 질문을 수정 해주십시오. –
'typedef Foo;' –
@ Jean-FrançoisFabre IIRC이 컴파일 오류입니다 –