为什么指向朋友类的指针的内容发生变化?

时间:2019-06-11 04:53:57

标签: c++

我正在尝试创建一个对象类“ Bag”来存储朋友类“ Items”的对象的链接列表。 Bag包含一个指向“ Item”对象的指针。 第一次调用Item对象的内容始终是正确的。 但是,我遇到了一些问题,因为随后调用的值永远不会与第一次调用的值相同。

换句话说, Baseclass.BaseclassMember是预期的常量。 但是(Baseclass.FriendClassPointer)-> FriendClassMember正在更改

有人知道为什么吗?

enum itemtype {potion, poison};

class Item
{
public:
friend class Bag;

Item(itemtype,int);
void initItem();
int qty;
int value;
Item *prevItem, *nextItem;
itemtype type;
};

class Bag
{
public:
Bag(Item,int);
Item *currentItem;
int currentsize;
int maxsize;
};

Item::Item(itemtype ITEMtype, int quantity): type(ITEMtype),qty(quantity)
{
initItem();
prevItem=nullptr;
nextItem=nullptr;
}


void Item::initItem()
{
value=8 ;           
}

Bag::Bag(Item firstItem, int maxbagsize) : currentItem(&firstItem),maxsize(maxbagsize),currentsize(1) 
{
currentItem->nextItem = currentItem;
currentItem->prevItem = currentItem;
cout<<"constructor check: Item Address "<<currentItem<<" nextAddress "<<currentItem->nextItem<<" "<<"\n";
}

int main()

Item item1(potion,1);
Bag bag1(item1,5);

cout<<" 1st call:"<<" Bagsize "<<bag1.currentsize<<" nextAddress "<<(bag1.currentItem)->nextItem<<"\n";
cout<<" 2nd call:"<<" Bagsize "<<bag1.currentsize<<" nextAddress "<<(bag1.currentItem)->nextItem<<"\n";

getchar(); /* stops window from closing */
return 0;

0 个答案:

没有答案