Я пишу программу на C ++, используя Code :: Blocks. Я хочу сделать двусвязный список.
Я планирую создать класс узлов с именем geoPoint
с указателями north
и south
на другие узлы. Я написал тестовую функцию, чтобы создать и связать два узла, а затем пересечь их с третьим узлом. Вот что у меня есть:
#include <iostream>
#include <string>
using namespace std;
class geoPoint
{
public:
geoPoint *north, *south;
private:
string description;
public:
void showDesc()
{
cout << description << endl;
};
void setDesc(string sourceText)
{
description=sourceText;
};
void setNorth(geoPoint sourcePoint)
{
north= &sourcePoint;
}
void setSouth(geoPoint sourcePoint)
{
south= &sourcePoint;
}
};
int main()
{
geoPoint testPoint,testPoint2,currentPoint;
string sourceText("testPoint");
string sourceText2("testPoint2");
testPoint.setDesc(sourceText);
testPoint2.setDesc(sourceText2);
testPoint.setNorth(testPoint2);
testPoint2.setSouth(testPoint);
currentPoint=testPoint;
currentPoint.showDesc();
currentPoint= ¤tPoint.north;
currentPoint.showDesc();
cin.get();
return 0;
};
main()
вылетает при достижении линии currentPoint= ¤tPoint.north;
. Сообщение об ошибке:
error: no match for 'operator=' in 'currentPoint = & currentPoint.geoPoint::north'
Я думал, что a=&b
- это правильный способ присвоения разыменованного содержимого указателя b
переменной a
. Что я делаю не так?