2014-09-18 2 views
0

Im пытается создать функцию для копирования моей структуры карты. im начать легко, просто копируя значение. Однако, мой cvalue разве копирование, он все еще читает 5, когда следует читать 1000.Создание пользовательской строки «string» (struct) copy

#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; 
} 

ответ

4

Если вы собираетесь скопировать 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; 
+0

Мне нужно использовать указатели, чтобы скопировать эти строки, хотя в другом задании, и я пытаюсь выяснить, как это сделать. это дает мне ошибку: не могу назначить карту const на карточку – matt

+0

@matt Что требуется для задания? –

+0

Мне нужно создать свою собственную функцию stringcopy с помощью указателей, по сути, чтобы скопировать эту структуру карты в другие и «player struct», которую я пропустил. я даже не могу понять, как скопировать только .cvalue с помощью указателя :( – matt

Смежные вопросы