의 캐스팅 포인터가 아닌 인스턴스는 내가 클래스 A를하고C++ 사용자 정의 클래스
class A
{
public:
A(){};
}
class B : public A
{
public:
B(int value){ foo = value };
int foo;
}
B가있는 int foo에있는의 서브 클래스 서브 클래스 B를 가지고 말할 수 있습니다.
std::vector<A> mylist;
B myB(5); //Create a new instance of class B
mylist.push_back(myB); //Add b to my vector of A.
가 지금은 myList에의 요소에 액세스하고 B를 입력하고 'foo는'검색 캐스팅 입력하십시오 : 좋아
이제 다음 내가 말할 수 있습니다. 다음은 합법적입니까?
B *instance = (B *)&mylist[0];
내 프로젝트에이 일을 시도했지만 내가 foo는의 값을 출력한다면 그것은 잘못된 것입니다 :
std::cout<<instance->foo<<std::endl; // This does not give me 5. It gives me a garbage number.
문제점은 그렇게하지 사실에서 유래한다 C++에서 비 포인터를 변환하는 적절한 방법을 알고 있어야합니다.
'좋아 지금은 할 말을 할 수는 다음과 같이하십시오. 당신이 그렇게해서는 안되기 때문에 나머지 질문은 논점이됩니다. – PaulMcKenzie
^그럼 비 포인터를 던져 올바른 방법을 알아 내려고 애 쓰고있어 ... – user1855952
가능한 복제본 [C++에서 슬라이싱 문제가 무엇입니까?] (http://stackoverflow.com/questions/274626/) what-is-the-slicing-problem-in-c) –