일반 아키텍처를 개선하려고 노력 중이며이 유형의 모호한 컨텍스트 참조를 사용하는 시스템이 내 용도에 이상적이라고 판단했습니다. 그러나 구문을 작동시키는 방법을 찾는 데 문제가 있습니다. 나는 이런 일이 가능할 지 모르겠다! 나는 대부분 같은 일을 수행하지만, 이것은 가장 좋은 것입니다 약간 shiestier 대안이 : 난 당신이 구현하려는 않는 것을 확실하지 않다C++ 비 형식 템플릿 템플릿 매개 변수, this에 대한 참조
class IContained
{
public:
virtual int getInt() = 0;
};
typedef std::shared_ptr<IContained>IContainedPtr;
template<template<class RefType, RefType& itsRef> class ContainedType>
class TestClass
{
TestClass() :
myContained(new ContainedType < TestClass, *this>())
{
}
int getContextInt()
{
return 3;
}
IContainedPtr myContained;
};
template<class RefType, RefType& itsRef>
class Contained:
virtual public IContained
{
int getInt()
{
return itsRef.getContextInt();
}
};
TEST(POTATO, PARTY)
{
TestClass<Contained> myTest();
int thing = myTest.myContained->getInt();
EXPECT_EQ(thing, 3);
}
성취하려는 것을 설명하기 위해 단어 또는 더 나은 클래스 다이어그램을 사용하는 것이 더 나을 수도 있습니다. 코드가 컴파일 할 때조차 가까이 있지 않으므로 코드만으로 질문을 추론하기는 어렵습니다. –
좁혀 주시겠습니까, 당신은 무엇을 도와주고 싶습니까? "나를 위해 일하는 것"이 너무 광범위합니다. – Warlord
죄송합니다. 누군가가 시력으로 문제를 인식 할 수 있다고 생각했습니다. 고맙게도 누군가가 그랬던 것처럼 보입니다. 나는 당신이 내가 어떻게 클래스들을 구현하기를 바라는 지 알 수 있도록 나의 GTest 물건들을 포함시켰다. 상황에 맞는 방법을 설명하는 데는 시간이 좀 걸릴 것입니다 ... 어쨌든 시간을내어 주셔서 감사합니다. 나는 지금 그것이 무엇이 잘못되었는지 압니다. – WhittlesJr