Trouble using an array in a class (C++) -
i've looked through various forum posts here , other sites have not seen referring similar problem. problem i'm having is: studentinfo array not run besides when array elements 6 or below. i want able have array size of 23, code returns:
bash: line 12: 51068 segmentation fault $file.o $args
the code i've provided below simplified version of actual code. have use array in program (no vectors may want suggest) because part of assignment. still little new c++ explanation answers awesome. help!
#include <iostream> #include <string> using namespace std; class studentgrades { private: string studentinfo[23]; public: void setstudentinfo(string info) { (int = 0; < 23; ++i) { studentinfo[i] = info; } } string getstudentinfo() { (int = 0; < 23; ++i) { cout << studentinfo[i] << " "; } } }; int main() { studentgrades student1; student1.setstudentinfo("bob"); student1.getstudentinfo(); }
the code has undefined behavior because member function getstudentinfo
returns nothing though declared non-void return type.
declare like
void getstudentinfo() const { (int = 0; < 23; ++i) { cout << studentinfo[i] << " "; } }
also better not use magic numbers. can add static constant data member in class this
class studentgrades { private: static const size_t n = 23; string studentinfo[n]; ....
and use everywhere needed. example
void getstudentinfo() const { (size_t = 0; < n; ++i) { cout << studentinfo[i] << " "; } }
Comments
Post a Comment