지금은 PutImageData_explicit
입니다. 그러나 그것은 보호 된 회원입니다.
- 시스템을 속이고 사용자의 목적에 맞게 캡슐화를 해제 할 수 있습니다. 파생 및 다운 캐스팅 (이제 보호받는 회원은 모두 귀하의 것입니다).
- 또는 어려운 방법으로
ImageData
및 ErrorResult
으로 뒤죽박죽을 보내면서 PutImageData
을 사용하십시오. 보호 된 멤버에 도착 Downcasting
:
#include <string>
#include <iostream>
class Base {
protected:
std::string myName() {
return "Base";
}
};
class Derived : public Base {
public:
std::string myName() {
return Base::myName();
}
};
int main() {
Base *base = new Base();
Derived* derived = static_cast<Derived*>(base);
std::cout << derived->myName() << std::endl;
delete base;
return 0;
}
PS :이 여전히 사실 sizeof(Base) == sizeof(Derived)
를 보유하고 있기 때문에이 작동합니다. 크기를 수정하고 싶지는 않습니다. segfault 및 heap 손상의 팬이 아닌 한 데이터 멤버 등을 추가하여)
최근에 두 번째 방법을 시도했습니다. 성능면에서 대단한 결과 (비디오 프레임 그리기). "상영 중"에 대해 더 자세히 이야기하고 어떻게 달성 할 수 있습니까? – peetonn
죄송합니다, 나는 다운 캐스팅을 말하려고했으나 업 캐스팅하지 않았습니다. 정답과 다운 캐스팅의 예가 추가되었습니다. – nmaier