playXP

서브 메뉴

Page. 1 / 18500 [내 메뉴에 추가]
글쓰기
작성자 아이콘 기라졸
작성일 2018-06-14 21:03:36 KST 조회 950
제목
연산자 오버로딩이 막히는데 도와주실분 계신가요?

class Account { std::string Name; std::string Number; int Password; int Money; 

public:

 

Account operator= (Account &ref){

Name = ref.Name;

Number = ref.Number;

Password = ref.Password;

Money = ref.Money;

 }

 

int main () {

Account A, B;

 

A = B; 

return 0;

 }

이런식으로 나오는데 데이터를 각자 설정하고 입출력하는 부분은 상관없는데

A = B; 실행하는 구문에서 작동이 중지되었습니다하고 뜨네요

 

문법적인 오류는 검출이 안되는데 왜그런지... Dev C++ 쓰고있습니다

지속적인 허위 신고시 신고자가 제재를 받을 수 있습니다.
신고 사유를 입력하십시오:

아이콘 CF_Crusader (2018-06-14 21:23:41 KST)
0↑ ↓0
센스 이미지
b가 초기화가 안 되어서?
아이콘 기라졸 (2018-06-14 21:26:29 KST)
0↑ ↓0
센스 이미지
여기엔 안적었는데 A,랑 B에 값 입력했습니다.

데이터 제대로 들어갔는지 출력하는 부분 A, B 둘다 잘나오는데 A = B 부분에서 실행이 중지되네요
아이콘 CF_Crusader (2018-06-14 21:33:12 KST)
0↑ ↓0
센스 이미지
c++ 안한지 너무 오래되었다 으으
혹시 연산자 정의 안에 도트를 ->로 해보셨나요?
아이콘 기라졸 (2018-06-14 21:39:07 KST)
0↑ ↓0
센스 이미지
음.. 포인터가 아니라서 안써봣는데 한번 써보겟습니다
아이콘 기라졸 (2018-06-14 21:40:04 KST)
0↑ ↓0
센스 이미지
-> 연산자는 포인터만 된다고 신택스 에러뜨네용
drakegogo (2018-06-14 23:52:50 KST)
0↑ ↓0
센스 이미지
대군징
아이콘 칠십삼 (2018-06-15 00:25:29 KST)
0↑ ↓0
센스 이미지
this->Name = ref.Name;
맞나 모르겠네요
frsehP (2018-06-15 00:28:21 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
이거 보고 로그인 했는데 제가 생각하기엔 = operator는 return 값이 reference여야 되니까
Account operator= (Account &ref) 가 &Account operator= (Account &ref)
ㄷㅚ야하지 않을까요?
http://en.cppreference.com/w/cpp/language/operators
frsehP (2018-06-15 00:29:30 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
아 Account& operator= (Account &ref) 인가
아이콘 LingTone (2018-06-15 02:34:49 KST)
0↑ ↓0
센스 이미지
윗분 말대로 리턴값 오류인 거 같은데요.
GCC + -Werror 옵션 먹이고 돌리니까 아래 에러 메시지가 나옵니다.
In member function 'Account Account::operator=(Account&)':
error: no return statement in function returning non-void [-Werror=return-type]
아이콘 LingTone (2018-06-15 02:37:09 KST)
0↑ ↓0
센스 이미지
그리고 일단 멤버 초기화도 안 되어 있음
늑대기사 (2018-06-15 05:10:01 KST)
0↑ ↓0
센스 이미지
연산자 오버로딩 쓰려면 멤버 초기화도 해야하고 참조형 리턴값 필요함

그리고 저걸 알게되면 functor라는 고급스킬을 사용가능
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.