我试图创建一个功能来复制我的卡结构。我只需复制cvalue就可以轻松开始。但是,我的cvalue不复制,当应读取1000时仍读取5。

#include <iostream>
#include <fstream>
#include <ctime>
#include <stdlib.h>
#include <string>

using namespace std;

//Structs
struct card
{
    char suit[8];
    char rank[6];
    int cvalue;
    char location;
};

void copyCard(card destination, card source);

int main()
{
    card card1;
    card card2;
    card1.cvalue = 1000;

    card2.cvalue = 5;
    card *card1p = &card1;

    copyCard(card2, card1);
    cout << card2.cvalue << endl;

}

void copyCard(card destination, card source)
{
    card *myPointer;
    myPointer = &source;
    (*myPointer).cvalue = source.cvalue;
    myPointer = &destination;
    destination.cvalue = (*myPointer).cvalue;
}

最佳答案

如果打算将source复制到目标,则可以将source设置为const &(修改没有任何意义),并且目标可以是引用或指针。

void copyCard(card& destination, const card& source)
{
  destination = source;
}

int main()
{
  card card1, card2;

  card1.cvalue = 1000;
  card2.cvalue = 5;

  copyCard(card2, card1);
  cout << card2.cvalue << endl;
}


但是,根本没有理由使用copyCard函数。您可以通过简单的分配将card1复制到card2

card2 = card1;

10-06 07:53