이 프로그램을 실행하면 첫 번째 쌍의 값만 출력되는 것처럼 보이지만 다른 프로그램에서는 출력되지 않습니다. 무슨 일 이니?로컬 클래스 c-ism
#include <iostream>
#include <vector>
class a
{
public:
class b
{
public:
a* parent;
void test()
{
std::cout<<parent->value<<std::endl;
}
} b1;
unsigned long value;
a()
{
b1.parent = this;
value = 2;
}
void go()
{
value++;
b1.test();
}
};
int main()
{
{
a a1;
a1.go();
std::cout<<a1.value<<std::endl;
}
std::cout<<std::endl;
{
a a1; a1 = a();
a1.go();
std::cout<<a1.value<<std::endl;
}
std::cout<<std::endl;
{
std::vector<a> a1; a1.push_back(a());
a1.at(0).go();
std::cout<<a1.at(0).value<<std::endl;
}
return 0;
}
예상되는 사항은 무엇입니까? 왜 그걸 기대하니? 뭐하고 있니? –
= 새 줄. 나는 기대하고있다. 3, 3,, 2, 3,, 2, 3입니다. 3, 3, 3, 3, 3, 3입니다. 그러나 a1이 만들어지는 방식 때문에, 나는 왜 그런지 알지 못한다. 그리고 나는 이런 방식으로 구축 할 수 있어야한다. – alan2here
이들은 로컬 클래스가 아니며 * 중첩 된 * 클래스입니다. –