{"id":31487,"date":"2023-01-21T23:07:17","date_gmt":"2023-01-21T17:37:17","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\/"},"modified":"2023-01-21T23:07:17","modified_gmt":"2023-01-21T17:37:17","slug":"solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\/","title":{"rendered":"[Solved] Variable life-time in member-function, values keep reseting to `0`, why? [closed]"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-23964927\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"23964927\" data-parentid=\"23964555\" data-score=\"1\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>You are declaring the variables as local to the function.  That is why they are being reset every time you call the function.  To preserve the values between function calls, you have to move the variables into members of the class instead.<\/p>\n<p>Your <code>Die<\/code> class is also not well designed, either.  You should be seeding the generator only one time, so do it in the constructor, and then create the <code>Die<\/code> object once, not on every loop iteration.  And you are not using the last roll in the new roll, so there is no need to have a <code>num<\/code> member in the class.<\/p>\n<p>You should also separate the beetle logic from the <code>Die<\/code> class.  A dice does not control a game.  A game uses a dice to make decisions.  Your code should reflect that.<\/p>\n<p>Try something more like this instead:<\/p>\n<pre><code>#include &lt;iostream&gt;\n#include &lt;ctime&gt;\n#include &lt;stdlib.h&gt;\n\nusing namespace std;\n\nclass Dice\n{\npublic:\n    Dice();\n    int roll();\n};\n\nclass Beetle\n{\nprivate:\n    int eyes;\n    int antennas;\n    int legs;\n    int wings;\n    int head;\n    int body;\n\npublic:\n    Beetle();\n    void takeATurn(Dice &amp;dice);\n};\n\nBeetle::Beetle() :\n    eyes(0),\n    antennas(0),\n    legs(0),\n    wings(0),\n    head(0),\n    body(0)\n{\n}\n\nDice::Dice() \/\/ initialize the dice\n{\n    srand((unsigned)time(0));\n}\n\nint Dice::roll() \/\/roll one dice to get random number\n{\n    int num = (rand() % 6)+1;\n    cout &lt;&lt; num;\n    return num;\n}\n\nvoid Beetle::takeATurn(Dice &amp;dice) \/\/player is building the beetle\n{\n    int num = dice.roll();\n\n    if ((num != 6) &amp;&amp; (body &lt; 1))\n    {\n        cout &lt;&lt; endl &lt;&lt; \"You need a body first\";\n        return;\n    }\n\n    switch (num)\n    {\n        case 1:\n            if (eyes &lt; 2)\n            {\n                eyes++;\n                cout &lt;&lt; endl &lt;&lt; \"You got an eye\";\n            }\n            else\n                cout &lt;&lt; endl &lt;&lt; \"Sorry, the beetle has only 2 eyes!\";\n            break;\n        case 2:\n            if (antennas &lt; 2)\n            {\n                antennas++;\n                cout &lt;&lt; endl &lt;&lt; \"You got an antenna\";\n            }\n            else\n                cout &lt;&lt; endl &lt;&lt; \"No more than 2 antennas\";\n            break;\n        case 3:\n            if (legs &lt; 6)\n            {\n                legs++;\n                cout &lt;&lt; endl &lt;&lt; \"You got a leg\";\n            }\n            else\n                cout &lt;&lt; endl &lt;&lt; \"Opps, you can't have more legs!\";\n            break;\n        case 4:\n            if (wings &lt; 2)\n            {\n                wings++;\n                cout &lt;&lt; endl &lt;&lt; \"You got a wing\";\n            }\n            else\n                cout &lt;&lt; endl &lt;&lt; \"nope, the beetle got 2 wings only\";\n            break;\n        case 5:\n            if (head &lt; 1)\n            {\n                head++;\n                cout &lt;&lt; endl &lt;&lt; \"You got the head\";\n            }\n            else\n                cout &lt;&lt; endl &lt;&lt; \"One head is enough\";\n            break;\n        case 6:\n            if (body &lt; 1)\n            {\n                body++;\n                cout &lt;&lt; endl &lt;&lt; \"You got the body\";\n            }\n            else\n                cout &lt;&lt; endl &lt;&lt; \"You got the body already\";\n            break;\n        }\n    }\n}  \n\nint main()\n{\n    int n = 0;\n    cout &lt;&lt; \"start?\";\n    cin &gt;&gt; n;\n    if (n == 1)\n    {\n        Dice dice1; \n        Beetle beetle;\n\n        do\n        {\n            beetle.takeATurn(dice1);\n            cout &lt;&lt; endl &lt;&lt; \"Repeat?: \";\n            cin &gt;&gt; n;\n        }\n        while (n == 1);\n    }\n\n    return 0;\n}\n<\/code><\/pre>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\"><\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Variable life-time in member-function, values keep reseting to `0`, why? [closed] <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] You are declaring the variables as local to the function. That is why they are being reset every time you call the function. To preserve the values between function calls, you have to move the variables into members of the class instead. Your Die class is also not well designed, either. You should be &#8230; <a title=\"[Solved] Variable life-time in member-function, values keep reseting to `0`, why? [closed]\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\/\" aria-label=\"More on [Solved] Variable life-time in member-function, values keep reseting to `0`, why? [closed]\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324,519,5844],"class_list":["post-31487","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c","tag-class","tag-member-functions"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>[Solved] Variable life-time in member-function, values keep reseting to `0`, why? [closed] - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Variable life-time in member-function, values keep reseting to `0`, why? [closed] - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] You are declaring the variables as local to the function. That is why they are being reset every time you call the function. To preserve the values between function calls, you have to move the variables into members of the class instead. Your Die class is also not well designed, either. You should be ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-21T17:37:17+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\\\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Variable life-time in member-function, values keep reseting to `0`, why? [closed]\",\"datePublished\":\"2023-01-21T17:37:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\\\/\"},\"wordCount\":160,\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"keywords\":[\"c++\",\"class\",\"member-functions\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\\\/\",\"name\":\"[Solved] Variable life-time in member-function, values keep reseting to `0`, why? [closed] - JassWeb\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\"},\"datePublished\":\"2023-01-21T17:37:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Variable life-time in member-function, values keep reseting to `0`, why? [closed]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/jass-website-logo-1.png\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\\\/\\\/jassweb.com\"],\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/author\\\/jaspritsinghghumangmail-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Variable life-time in member-function, values keep reseting to `0`, why? [closed] - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Variable life-time in member-function, values keep reseting to `0`, why? [closed] - JassWeb","og_description":"[ad_1] You are declaring the variables as local to the function. That is why they are being reset every time you call the function. To preserve the values between function calls, you have to move the variables into members of the class instead. Your Die class is also not well designed, either. You should be ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\/","og_site_name":"JassWeb","article_published_time":"2023-01-21T17:37:17+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Variable life-time in member-function, values keep reseting to `0`, why? [closed]","datePublished":"2023-01-21T17:37:17+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\/"},"wordCount":160,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++","class","member-functions"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\/","url":"https:\/\/jassweb.com\/solved\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\/","name":"[Solved] Variable life-time in member-function, values keep reseting to `0`, why? [closed] - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2023-01-21T17:37:17+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-variable-life-time-in-member-function-values-keep-reseting-to-0-why-closed\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Variable life-time in member-function, values keep reseting to `0`, why? [closed]"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/31487","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=31487"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/31487\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=31487"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=31487"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=31487"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}