이게 어째서 l-value가 아닌거죠!! ㅠㅠ
글쓴이: oneclubs / 작성시간: 목, 2009/06/04 - 10:11오후
ㅠㅠ
왜 이게 l-value가 아닌건가요!!! ㅠㅠ
정말 울고 싶습니다
class Damn{ private : Damn *it; public : Damn* WhatIt() { return it; } }; func() { Damn shit; shit.WhatIt() = Something.. <-- 이부분 }
저부분입니다..
컴파일러 : shit.WhatIt() 이거 lvalue 아니잖아 멍청아
라고 저한테 컴파일러가 시비거는데.. 싸워야되나요 ㅠㅠ
왜..왜 lvalue가 아닌건가요!!
방법은 없나요
컴파일러를 무찌를수 있는 방법좀 전수해주세요 ㅠ
Forums:
포인터 말고
포인터 말고 레퍼런스를 리턴하세요. 컴파일러가 사랑해줄겁니다.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
함수의 리턴값은
함수의 리턴값은 변수 그 자체가 아니라 변수의 값일 뿐입니다.
포인터를 반환한다고 해도, 포인터 자체의 값(주소) 가 반환되는 것이지 어떤 변수가 반환되는 것이 아닙니다.
it 이 5000 번지를 가리키고 있다면 shit.WhatIt() = Something.. 은 5000 = Something.. 과 같은 것이죠.
private 변수의 값을 변경하려면, shit.AnotherIt(Something); 의 형태로 작성하셔야 합니다.
그 기분은 정말 뼛속깊이 이해하지만, 다음부턴 좀 이쁜 단어들을 사용해 주세요 :)
음 그런군요 근데..
Damn* WhatIt() 이거를 레퍼런스로 바꿔서
Damn& WhatIt()
이렇게 쓰면 이러한 에러가 납니다.
Damn * 를 Damn&로 변환할수 없다고 합니다.
..
되야 하는거 아닌가요?
아..문제를 해결했습니다.
끙끙되다..
Damn*& WhatIt()이렇게.. 포인터에 대한 레퍼런스로 바꾸니까 일단 해결은 쭉쭉 되는데
와 이게 무슨소린지..답변 감사합니다.
Damn* WhatIt() { return it;
Damn* WhatIt() { return it; }
*shit.WhatIt() = Something();
또는
Damn& WhatIt() { return *it; }
shit.WhatIt() = Something();
*&를 보니 참 감회가 새롭군요.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
댓글 달기