我正在尝试创建一个对象类“ 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;