0과 1의 배열을 처리하기 위해 C++로 클래스를 만들었습니다. 개인 속성에는 크기, 유형 및 지정된 크기에 대한 정수 배열이 있습니다.생성자를 다시 호출 할 때 객체의 C++ private 멤버가 수정되었습니다.
제 문제는 배열의 값이 생성자를 다시 호출 할 때마다 수정된다는 것입니다. 좀 더 자세히 살펴보면, 생성자를 사용하여 첫 번째 객체를 만든 다음 두 번째 객체를 생성하고 첫 번째 객체를 수정하여 첫 번째 객체를 수정합니다.
나는 포인터, 새로운 연산자, const 개체에 const 포인터를 가지고 놀려고했지만 아무런 효과가 없다! 이상적인 배열의 크기는 내가 선택한 배열의 크기의 값으로 수정 된 배열 값의 세 번째, 여섯 번째, 그 다음 아홉 번째 등입니다. 제안이 감사하겠습니다. 내 코드에서
일부 추출물 :
class SArray
{
private:
int SArray_Size;
int DType;
int Table[];
public:
//complete constructor
SArray::SArray(const int& tsize, const int& ttype)
{
SArray_Size = tsize;
DType = ttype;
if (ttype == 0) //random array with integer values between 0 and 1
{
for (int i = 0; i < getSize(); i++)
{
Table[i] = rand() % 2;
}
}
if (ttype == 1) //default array with only 1s
{
for (int i = 0; i < getSize(); i++)
{
Table[i] = 1;
}
}
}
};
int main()
{
const int NbRes = 15;
//reset the random number generator
srand(time(0));
const SArray test3(NbRes,1);
(test3).print();
const SArray test1(NbRes,1);
(test1).print();
(test3).print();
return 0;
}
당신이 완전한 테스트 케이스를 게시 할 수 없습니다 : 예를 들어
? 관련 코드를 볼 수 없다면 문제가 무엇인지 추측하기 어렵습니다. –
버그는 아니지만, 왜'test3.print();'대신'(test3) .print();'를 써야합니까? 여분의 중괄호는 나에게 매우 이상하게 보입니다 ... – catchmeifyoutry