템플릿 매개 변수가 허용되지 않기 때문에 템플릿 매개 변수를 친구와 공유 할 수 없습니다. 어떻게하면 같은 효과를 얻을 수 있을까요?템플릿 매개 변수 추가하기
내가 원하는 것은 기본적으로 소유하고있는 개체 외부에서 사용할 수없는 형식입니다. 왜 오히려 요점을 말하지만, 정말로 알고 있어야한다면, 나는 소유 자원을 공유하는 문제에 답하는 일련의 스마트 포인터를 공식화하려고합니다. 그 자체 소유자 선언하지 않는 한
template < typename T, typename Owner >
struct accessible_member
{
private:
accessible_member() : val(T()) {}
accessible_member(T const& t) : val(t) {}
operator T&() { return val; }
operator T const&() const { return val; }
member_ptr<T> operator &() { return member_ptr<T>(val); }
friend class Owner;
};
는 따라서 클래스가 구성원으로이 객체를 보유 할 수 없으며, 충분히 바보 경우 노출 : 그래서 내가 무엇을 찾고 있어요 것은 일 경우, 그래서 같은 것입니다 그것은 그대로, 바보 같은 교실 밖에서 사용하는 것은 불가능합니다.
나는 마지막 단락에서와 같이 braindead 코드를 막으려 고 노력하지 않는다. C++에서는 충분히 열심히 노력하면 누군가 코드를 위반할 수 있다는 것을 받아 들여야합니다. –
@Fred - 'const'와 RAII를 포함한 코드 안전 조치를 도입하려는 모든 시도에 대해 동일한 어리석은 인수를 사용할 수 있습니다. 당신은 다른 철학 아래에서 일할 수도 있지만 지침에 따라 구조가 올바로 사용하기 쉽고 잘못 사용하기 어려워 야한다고 규정합니다. 구조물 자체의 요점은 다른 것에서 제공되지 않은 안전 조치를 도입하는 것입니다. 내 질문에 대한 귀하의 이의 제기가 중복되고, 제자리에서 벗어나고, 솔직히 공세감을 느낍니다. –
@ NoahRoberts : 1) 이것은 올바르게 사용하기 쉽지 않습니다. 2) Const 및 RAII는 잘못 사용하기 쉽습니다. 3) 당신의 이해 부족 ("나는 그 점을 보지 못한다")을 어떻게 공격적이라고 생각할 수 있습니까? 나 자신을 보호하기 위해 내 대신에 화를 내고 있습니까? –