Please help me figure out what I'm doing wrong.
I have a class, declared in a header file:
Also declared was a stupid little function, to be used in main. It replaces a larger function, for the question, that was / is going to collect some statistics about rolled dice.Code:// std_dice.h // header file for standard system include files, // project include files #include <stdio.h> #include <tchar.h> // additional headers #include <iostream> #include <fstream> #include <stdlib.h> #include <time.h> namespace DICE { class SingleDie { public: int nRolled; public: void RollDie(); }; } void fStupidFunction();
Here is main.cpp, including the class definition, the main function, and the function where I can't properly use the class.
As per the comments in the function: fStupidFunction: I can access the member variable .nRolled just fine. (I'll later fix the class so that there is a member function to set .nRolled, make it private, and make sure it never gets set to 7.)Code:// main.cpp #include "std_dice.h" using namespace std; int main(){ /***************Classes here********************************/ // set up the SingleDie class class SingleDie { public: int nRolled; // constructor SingleDie() { cout << "Constructor performed \n\n"; // for testing nRolled = 0; } // SingleDie constructor public: void RollDie() { nRolled = 1; nRolled = 10 + rand() % 60; nRolled /= 10; } // RollDie }; //SingleDie class /***************Main testing here*******************************************/ using namespace DICE; SingleDie ssss; ssss.RollDie(); cout << ssss.nRolled << " = Value of nRolled in main \n\n"; fStupidFunction(); // pause after executing console application system("PAUSE"); return EXIT_SUCCESS; return 0; }//main /*********************Functions Here****************************/ void fStupidFunction() { //using namespace DICE; DICE::SingleDie sOneDice; sOneDice.nRolled = 7; // Works: member variable is public for now sOneDice.RollDie(); // Doesn't work! // If I comment out the above line, the program compiles. cout << sOneDice.nRolled << " In the stupid little function! \n\n"; };
In fact, if I comment out the line SOneDice.RollDie(); then the program compiles and runs. Therefore, I can suppose that my namespace is okay and that the class variable is declared okay--or can I? The problem comes when I try to use the member function RollDie().
RollDie() works in main but not in fStupidFunction.
It doesn't make sense to me that one cannot use a class variable in a function--only in main. I've looked in Bjarne's book (which is way above my head anyway), in C++ for Dummies (which doesn't cover the issue), and in various tutorials. If someone can help me to understand what I've done wrong and how to fix it, I would be very appreciative.
Thanks,
Keith



LinkBack URL
About LinkBacks




