나는 생성자를 통해 배열을 초기화하는 방법을 모른다. 나는 모든 0 값으로 배열을 초기화하는 방법 중 하나는하지만, 난 당신이 내 코드에서 볼 수있는 규칙을 따라야합니다 마십시오 여기 How to initialize all elements in an array to the same number in C++ 의 하나라는 것을 알고있다. 나는 setArr() 및 getArr 생성자로() aswell이 필요합니다. arr [5]이 i처럼 올바르게 작동 할 수 있도록 생성자와 그 함수에 대해 무엇을 넣을 지 말해 줄 수 있습니까? 배열에 대한 생성자에서 초기화와 같은 예제를 찾지 못했기 때문에 귀하의 설명에 진심으로 감사드립니다. 나는 다른 사람들이 나중에 혜택을 누릴 수 있다는까지 그렇게 작동시에 코드를 업데이트합니다 : 는 관련C++의 생성자에서 배열 초기화
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
class A
{
private:
double arr[5];
int i;
public:
//THIS HERE IS WRONG, BUT HOW TO PROGRAMM IT SO THAT I GET NO ERRORS?
A(double arrx = {0}, int ix = 4):, i(ix)
{
std::vector<double> v1(arrx, arrx+5);
std::fill(v1.begin(arr), v1.end(arr), arrx);
}
~A() {}
void setI(int ix) { i = ix; }
double getI(void) { return i; }
void setArr(double arrx[])
{
for (int i=0; i < sizeof(arrx); i++)
arr[i] = arrx[i];
}
double* getArr(void) { return arr; }
};
int main()
{
A ob1(6);
//ob1.setI(5);
std::cout << ob1.getI() << std::endl;
}
편집을 주셔서 감사합니다. 오류 C2661을 수정하고 오류가 발생했습니다. 'std :: vector < _Ty> :: begin': 오버로드 된 함수가 1 개의 인수를 사용하지 않습니다.
올바른 C++ 구문을 사용하여 코드를 수정하십시오. – 101010
[여기 도시]은 '0'으로 알 어레이 요소를 초기화하는 방법 관용적 (http://stackoverflow.com/questions/23987515/zero-initializing-an-array-data-member-in-a-constructor/23987926 # 23987926). – juanchopanza
@juanchopanza 생성자는 'arrx'매개 변수가 무엇이든간에 모든 요소를 초기화하려고 시도하는 것 같습니다.이 매개 변수가 단일 값으로 5 회 사용되도록 제한되는지, 그리고/또는 가능한지 여부가 명확하지 않습니다. 실제 5 값 배열을 받아 들일 수 있습니다 - 그러나 그것들 중 원하는 것이 있다면, 당신의 링크에서 다루는 무조건적인 초기화를 0으로 보이기를 원하지 않는 것 같습니다 ... –