홈>
플레이어와 게임의 두 클래스가 있습니다.
class Game
{
private:
int maxPlayer;
Player** playersArray;
public:
Game(int maxPlayer);
~Game();
}
playerArray의 각 인덱스는 Player 클래스에 대한 포인터로 구성되어 있습니다.이 메시지가 계속 표시되므로 다음 생성자가 작동하지 않습니다.
error: invalid use of 'Player::Player' playersArray[i]->Player();
Game::Game(int maxPlayer)
{ this->maxPlayer=maxPlayer;
this->playersArray = new Player*[maxPlayer];
for(int i=0;i<maxPlayer;i++)
{
playersArray[i]->Player();
}
}
이것은 클래스 플레이어입니다 :
class Player {
private:
char* player_name;
int level;
int life;
int strength;
Weapon player_weapon;
int place;
}
내 목표는 player_name을 NULL로 설정하고NOT을 메모리의 임의의 위치로 설정하는 것입니다. 이것이 Player ()가해야 할 일입니다.
-
답변 # 1
관련 자료
- Java의 Void 메소드 | BankAccount 클래스 생성자
- c++ - 클래스의 기본 생성자를 변경했지만 컴파일러가 여전히 기본 생성자를 호출하는 것 같습니다
- 자바의 제네릭 클래스의 비 제네릭 생성자
- php - 추상 클래스 호출은 생성자에서 자식 값을 어떻게 얻습니까?
- c++ - 수퍼 클래스에는 기본 생성자가 필요합니까?
- drake - 유형 종속 생성자 인수가있는 클래스의 스칼라 변환 복사 생성자
- c++ - 생성자가없는 경우 클래스를 생성자에 전달합니다 왜 작동합니까?
- Dart - 다트 - 클래스 이름으로 클래스 생성자 호출
- angular - 클래스 생성자에서 배열 obj 속성이 정의되지 않았습니다
- javascript - 생성자 만 사용하여 Reflect를 사용하여 클래스 필드 유형을 얻는 방법은 무엇입니까?
- c++ - clang-tidy - move 생성자는 복사 생성자를 호출하여 클래스 멤버를 초기화합니다
- typescript - di - injectable이 서버 시간을 호출하는 클래스의 생성자
- 더 이상 사용되지 않는 PHP4 스타일 클래스 생성자 사용이 PHP 7부터 지원되지 않습니까?
- c++ - 생성자 이동 및 이동 할당 기본 클래스의 연산자
- java - 확장 클래스에서 생성자를 만드는 방법
- android - Java에서 모델 클래스 생성자로 해시 맵 값을 전달하는 방법
- c++ - (왜) 순수 가상 파생 클래스에서 가상 기본 클래스 생성자 호출이 필요합니까?
- c++ - 파생 클래스 복사 생성자에서 복사 생성자가 어떻게 호출됩니까?
- kotlin - 형식 제약 조건이있는 일반 클래스에 기본 생성자를 추가하는 방법은 무엇입니까?
- c++ - 상속 된 클래스 템플릿을위한 매개 변수화 된 생성자
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- vue.js - axios를 사용하여 서버에 이미지를 업로드하는 방법
- python - 문자열에서 특정 문자 제거
당신은 당신의
Game
를 채우고 있지 않습니다 올바르게 배열하십시오. 당신은Player()
를 호출하려고합니다 생성자가 일반 클래스 메소드 인 것처럼 보이지만 더 나쁜 것은초기화되지 않은Player*
를 통해 호출하는 것입니다. 포인터.new
를 사용해야합니다 대신 연산자 : 예 :보다 안전한 옵션은
std::unique_ptr
를 사용하는 것입니다 원시 포인터 대신 :즉,
Player*
배열을 사용할 필요가 없습니다.Player
의 배열 일 때의 포인터 대신 객체로 충분합니다 :또는 :
std::vector
를 사용하면 더 단순화 할 수 있습니다 대신 :