이런 경우 데이터를 어디에다가 빼는게 좋을까요?

ikpil의 이미지

적 유닛 클래스가 따로 있고, 아군 유닛 클래스가 따로 있습니다.

1. 아군이 몇마리 살아 있고, 적 유닛이 몇마리 살아있는지 체크를 해야 합니다.
2. 두종류는 각각 다른 리스트에 담겨져 있습니다.

방법
1. 아군을 유닛 클래스에서 생성자에서 정적 변수 count를 count 1 증가, 소멸자에서 1 감소(적군도 마찬가지)
2. 게임 진행 클래스에 두개의 변수 설정, 아군을 리스트에 담을때 1증가, 리스트에서 지울때 1 감소

.. 이렇게 두가지 방법이 떠오릅니다.

실제 모델을 생각한다면, 아군 클래스나 적군 클래스나 클래스에서 자신의 수들을 알아야 한다고 생각되지 않아
게임 진행 클래스에 넣어서 관리했었습니다.

그러던중 EffectTive C++ 을 공부하는 중에..
적군 클래스에서 적개체수를 카운팅하는 변수를 정적변수로 넣어서 사용하고 있는것 입니다.

아직 배우는 입장이라, 무엇이 더 효율적 관리인지 모르겠습니다.
어디에 이 변수를 빼는것이 더 효율적으로 관리를 할수 있을까요?

moonhalo의 이미지

생성자, 소멸자에 넣는 다면 유닛 추가, 제거가 있을 때마다
클래스를 new, delete 해야 하는데 이건 좀 아닌것 같네요.
굉장히 자주 일어날텐데..

제 생각엔 유닛 관리자 클래스를 둬서, 이곳에서 수를 관리하는게 좋을 것 같습니다.
유닛은 unit pool을 둬서 필요할 때 꺼내 쓰는 방식으로 하면
new, delete 부하를 줄일 수 있겠죠.

정태영의 이미지

유닛을 new, delete 를 반복하는 상황이라면 static 변수를 두고 생성/소멸자에서 +/- 를 해주는 것이 코드 상으로는 유리할 것 같네요.

생성/소멸자에서 관리를 하게 된다면, new unit u; 과 delete u; 만으로 유닛 수를 셀 수 있게 될테지만 게임 진행클래스에서 관리하게 될 경우 new unit u; unit_count++; 혹은 delete u; unit_count--; 식으로 유닛 수를 업데이트 해줘야 할테니...

단 static 변수로 관리할 지 게임 진행 클래스에서 관리할 지는 변수의 위치의 차이 외에 큰 의미를 두기는 힘들 것 같네요.

--
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.