:C++ : 생성자에 배열을 전달하고,이 객체에 저장 나는 C++이 자바 스크립트 코드를 할 싶습니다
이class Example {
constructor(myArr) {
this.myArr = myArr;
}
test() {
console.log(myArr[0])
}
}
var myArr = [1,2,3,4]
var example = new Example(myArr)
example.test()
// prints `1`
내 C++ 시도가 :
#include <iostream>
class Example {
public:
int myArr[4];
Example(int myArr[4]);
void test(void);
};
Example::Example(int myArr[4]) {
//this.myArr = myArr;
this->myArr = myArr;
//myArr = myArr;
}
void Example::test(void) {
std::cout << this->myArr[0];
}
int main() {
int myArr[4] = {1,2,3,4};
Example *example = new Example(myArr);
example->test();
}
내가 돈 ' 내가 잘못하고있는 것을 정말로 이해하지 못한다. this.
대신 this->
을 사용하는 것과 같은 여러 가지를 시도했지만 항상 오류가 발생합니다. 예를 들어, 현재 버전은 나를 제공합니다 :
In constructor 'Example::Example(int*)':
12:17: error: incompatible types in assignment of 'int*' to 'int [4]'
내가 잘못하고있는 것을 정말로 이해하지 못합니다. 코드에 int myArr[4]
으로 배열을 지정 했으므로 int*
을 어디에서 건 기억할 수 없습니다. 벡터를 전달할 때이 예에서, 그것은 Example
동적 할당을 사용하는 관련 아니다, 벡터
의 쓸모없는 복사본을 방지하기 위해, 참조를 사용하기에
'std :: vector' 사용 – Amadeus
배열은 포인터로 쇠퇴합니다. 배열을'std :: vector '으로 바꾸면 쉽게 복사 할 수 있습니다. –
wally
가능한 경우 자동 저장 기간 (예 : example Example (myArr);) 대신 자동 저장 기간 (예 : myArr);을 사용하는 것이 더 바람직하며 원시 포인터 대신 스마트 포인터를 사용하십시오 – UnholySheep