I have created a basic class object with setter
and getters
based on the text book. The code work fine but when I attempt to change the data in name
from Square
to Circle
, I get error : double free or corruption (fasttop)
.
Can someone enlighten me what is happening here? Is this due to some kind of memory allocation error?
Below is a reproducible code:
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
class Shape
{
protected:
string name;
bool contains = false;
public:
Shape(string name, bool contains)
{
setName(name);
setContains(contains);
}
string getName();
bool getContains();
string setName(string name);
bool setContains(bool contains);
};
string Shape :: setName(string inputName)
{
name = inputName;
}
bool Shape :: setContains(bool inputContains)
{
contains = inputContains;
}
string Shape :: getName()
{
return name;
}
bool Shape :: getContains()
{
return contains;
}
int main()
{
Shape object1("Square", true);
cout << "Testing" << endl;
cout << object1.getName() << endl;
cout << object1.getContains() << endl;
object1.setName("Circle");
cout << object1.getName() << endl;
return 0;
}
Edit:
Interesting, when running the code in OnlineGDB without object1.setName("Circle");
and cout << object1.getName() << endl;
will report a segmentation fault error. What is the way to tackle this issue?
Aucun commentaire:
Enregistrer un commentaire