C++에서 런타임 포인터 지정 문제가 있습니다. 나는 스레드와 스레드 2 멤버와 base
클래스가 있습니다.C++에서 포인터를 사용하여 런타임 다형성
class base {
struct base_struct {
int a;
};
base_struct thread;
std::vector<base_struct> threads;
void fn() {}
};
derived1
하지만 다른 유형의 base
로부터 유도와 같은 두 개의 부재 (thread
및 threads
)를 갖는다.
class derived1 : public base {
struct derived_struct11 : public base_struct {
int b;
};
derived_struct11 thread;
std::vector<derived_struct11> threads;
void fn() {
printf();
}
};
derived2
또한 base
로부터 유도와 같은 두 개의 부재 (thread
및 threads
)이지만 다른 타입을 갖는다.
class derived2 : public base {
struct derived_struct22 : public base_struct {
int c;
};
derived_struct22 thread;
std::vector<derived_struct22> threads;
void fn() {
printf();
}
};
만 런타임에 나는 derived1
또는 derived2
사용할지 여부를 알 수 있습니다. 그래서 는 다음과 같은 방법으로 그것을했다 :
base base_obj;
derived1 derived1_obj;
derived2 derived2_obj;
base *ptr ;
런타임 함수에서 :
{
if (condition == yes)
ptr = &derived1_obj;
else
ptr = &derived2_obj;
}
문제는 내가 this
포인터 coreectly 기능에 액세스 할 수 있다는 것입니다. .. 스레드 (예를 들어, 값 그러나 : threads.size()
항상 내가 이것을 구현하는 더 좋은 방법을 알고 싶어 base
클래스
의로 표시됩니다
'base :: base_struct'가'private'이므로 컴파일하지 않아야합니다. –
샘플이었습니다. – deeps8us
나쁜 샘플이었습니다. 정확한 코드를 게시하는 것은 매우 중요합니다. 이렇게하면 ** ** 많은 것을 쉽게 할 수 있습니다. –