저는 C++을 처음 사용하여 다음 작업을 수행하려고합니다 :클래스 배열 및 대입 연산자
"sim"이라는 간단한 클래스가 있습니다. 나는 "sim"타입 클래스의 10 가지 요소의 배열을 만들고 싶습니다. 그래서 sim** a = new sim*[10]
을 사용했습니다.
그런 다음 루프를 실행하여 a[i]=new sim(i)
과 같은 새로운 요소를 만듭니다. 그러나 나중에 각 a [i]의 값 (필드)을 인쇄하려고 할 때, 나는 무엇을 제외하고 얻을 수 없습니다. 여기
#include "stdafx.h"
#include <iostream>
using namespace std;
class sim{
private:
int x;
const int y;
public:
sim();
sim(int z);
~sim();
void showInfo();
sim& operator=(const sim& s);
};
sim::sim():y(10),x(0)
{}
sim::sim(int z):y(10),x(z)
{}
sim::~sim()
{}
void sim::showInfo()
{
cout<<"x="<<x<<", y="<<y<<endl;
}
sim& sim::operator=(const sim& s)
{
x=s.x;
return *this;
}
int _tmain(int argc, _TCHAR* argv[])
{
sim** a = new sim*[10];
for(int i=0;i<10;i++)
{
a[i]= new sim(i);
}
for(int i=0; i<10; i++)
(*a)[i].showInfo();
getchar();
return 0;
}
그리고 여기에 잘못된 출력 :
x=0, y=10
x=-33686019, y=-830047754
x=-33686019, y=-572662307
x=1869774733, y=201385040
x=725928, y=726248
x=1423328880, y=11
x=24, y=2
x=55, y=-33686019
x=4814584, y=-1
x=0, y=0
Y는 항상 10이어야한다, x는 0-9이어야합니다. 내가 뭘 잘못하고 있니? 감사합니다.
단순히 뭐가 잘못 'sim arr [10];'? – jrok
의도적으로'std' 라이브러리를 사용하지 않습니까? –
Alex : 예. 이것은 숙제이며, 우리는 표준 라이브러리를 사용할 수 없습니다. jrok : 나는 그것을 시험해 보았습니다. 운이 없었습니다. sim ar [10]을 할 때 sim [i] = new sim (i)을 사용할 수 없습니다. – bomba6