c++초보 질문드립니다 클래스문을 이용하여 능력치를 랜럼함수로 배분하고 캐릭터와 몬스터를 만들어 게임을만드는것인데 c2659에러가떠서 질문드립니다
조회수 1225회
헤더 파일입니다
pragma once
class character
{
private:
int m_HP;
int m_MP;
int m_ATK;
int m_Def;
public:
character();
~character();
void setHP(int m_HP);
int hp()
{
return m_HP;
}
void setMP(int m_MP);
int mp()
{
return m_MP;
}
void setatk(int m_ATK);
int atk()
{
return m_ATK;
}
void setdef(int m_Def);
int def()
{
return m_Def;
}
};
cpp입니다
include"character.h"
include"COMMON.h"
character::character()
{
}
character::~character()
{
}
void character::setHP(int hp)
{
m_HP = hp;
}
void character::setMP(int mp)
{
m_MP = mp;
}
void character::setatk(int atk)
{
m_ATK = atk;
}
void character::setdef(int def)
{
m_Def = def;
}
메인 함수입니다
void main()
{
character *player = new character[a];
character *monster = new character[a];
void stat(character *p, int a, int b)
{
p->atk = rand() % a + b;//='함수를 왼쪽 피연산자로 사용했습니다
p->def = rand() % a;//='함수를 왼쪽 피연산자로 사용했습니다
p->hp = rand() % a + b;//='함수를 왼쪽 피연산자로 사용했습니다
p->mp = rand() % b;//"'='함수를 왼쪽 피연산자로 사용했습니다 "
}
}
저기에 전체적으로 c2659에러가 뜨는데 검색을 해보고 책을 읽어봐도 해결방안을 도저히 모르겠어서 질문드립니다 전체로 다올리면 보기 너무 힘드실것 같아서 중간 생략 해서 올립니다 필요하시다면 더올려드리겟습니다
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
main 함수를 잘못 올려 주신 것 같네요.
void stat(character *p, int a, int b) { p->atk = rand() % a + b;//='함수를 왼쪽 피연산자로 사용했습니다 p->def = rand() % a;//='함수를 왼쪽 피연산자로 사용했습니다 p->hp = rand() % a + b;//='함수를 왼쪽 피연산자로 사용했습니다 p->mp = rand() % b;//"'='함수를 왼쪽 피연산자로 사용했습니다 " } void main() { character *player = new character; character *monster = new character; int a = 0, b = 1; stat(player, a, b); stat(monster, a, b); //... }
위와 같은 내용일 거라 생각하고 답변 드리겠습니다.
여기서
p->atk = rand() % a + b;
을 보면, 멤버 함수에 정수를 대입하고 있습니다. 함수는 변수가 아니기 때문에 대입할 수 없습니다.멤버 변수에 대입하는 식으로 변경해야 하나 멤버 변수는 private 이기 때문에 작성하셨던
set**
멤버 함수를 사용하도록 변경해야합니다.void stat(character *p, int a, int b) { p->setatk(rand() % a + b);//='함수를 왼쪽 피연산자로 사용했습니다 p->setdef(rand() % a);//='함수를 왼쪽 피연산자로 사용했습니다 p->setHP(rand() % a + b);//='함수를 왼쪽 피연산자로 사용했습니다 p->setMP(rand() % b);//"'='함수를 왼쪽 피연산자로 사용했습니다 " }
댓글 입력