c++초보 질문드립니다 클래스문을 이용하여 능력치를 랜럼함수로 배분하고 캐릭터와 몬스터를 만들어 게임을만드는것인데 c2659에러가떠서 질문드립니다


헤더 파일입니다

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에러가 뜨는데 검색을 해보고 책을 읽어봐도 해결방안을 도저히 모르겠어서 질문드립니다 전체로 다올리면 보기 너무 힘드실것 같아서 중간 생략 해서 올립니다 필요하시다면 더올려드리겟습니다

  • 2018년 05월 12일에 작성됨

조회수 62


1 답변


좋아요
0
싫어요
채택취소하기

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);//"'='함수를 왼쪽 피연산자로 사용했습니다 "
}
  • 2018년 05월 12일에 작성됨

  • 정말감사합니다 근데 확인은 지금당장 못하고 내일 해야할것같네요 정말감사합니다    김덕호   2018.5.12 21:08     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close