[std::map]염치 불구하고.. ;;

tkfkdgody의 이미지

진짜 모르겠네요..;; 저번에 xylosper님께서 몇가지 사항들을 알려주셔서
일단 그 문제 해결하였습니다.

맵 사용시에 계정으로 키값을 설정해서
std::map[const char*, Player*]::iterator it = m_acctMap.find(account);

계정(account)과 같은 게 있으면 1번을 타고

Player* player = 0;

-------- 1번 -------------------
if (it != m_acctMap.end())
{
//기존 유저일 경우
player = it->second;

printf("old account : %s\n",(char*)&player->m_account);
}
---------------------------------------------

새로운 계정이 들어오면 2번을 타게 했습니다.
-------- 2번 -------------------
else
{
// 새로운 유저일 경우
player = new Player();

m_acctMap[account] = player;
player->m_account = account;
isOnline = false;

printf("new account : %s\n",(char*)&player->m_account);
}
---------------------------------------------

그런데 제가 실험한건 항상 2번 즉 새로운 계정이 들어올 때인데요...
아무도 로그인 되어 있지 않은 상황에서 계정 a, b, c... 가 있다면 위에 루틴에서 처음에
a가 들어오면 2번의 루틴을 잘 탑니다.. 문제는 그 이후 새로운 b, c의 유저는 계속 1번을 탑니다.;;
항상 2번만 타야할 것들이 계속 1번을 타는데요.. 제가 혹시 무엇을 잘못 했을까요...
하나 발견한건 1번 루틴에서 프린트를 찍으면 b, c가 들어와 루틴을 탈때도 a의 계정이 나옵니다..;;
그래서 혹시나 제가 find와 end의 사용을 제대로 못 했나 하는 생각이 드는군요.

참고로 위에 함수가 login이라면 호출시 login(const char* account)
account의 선언은 char account[30]입니다.

정리...!!!
아무 계정도 저장되지 않은 상태에서 login(a)가 호출되면
루틴 2번 호출..
그 이후 b가 로그인 login(b)하면 1번 루틴을 타면서 a의 계정을 출력..
c도 비와 마찬가지로 a의 계정을 출력..

흠.. 안풀립니다 ;;

wowcode의 이미지

위의 경우 key 값이 user id가 되는게 아니고 user id를 가리키는 포인터가 됩니다. const char*를 std::string으로 바꾸면 잘 될 것 같네요.

tkfkdgody의 이미지

아..네, 감사합니다.. ;;

뜻이 있어서 그렇게들 말씀을 하셨네요 ;; 저거완 관계있을줄이야...

좋은 하루 되십시오~ 다시 한번 감사합니다..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.