構造体配列のコピーについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アニィ

構造体配列のコピーについて

#1

投稿記事 by アニィ » 17年前

ご質問があります。
ある構造体配列を関数に渡し、渡した関数で引数の構造体配列をコピーする、という事を
行いたいのですが、エラーが出てしまいます。
どのようにしたら問題を解決できるかをご教授いただきたいと思います。
以下に簡単なサンプルプログラムを記載します。
#include <stdio.h>

struct ST{
	int a;
};

class A{
	ST clA[10];
public:
	void Draw( ST st_a );
};

void A::Draw( ST st_a ){
	
	// 構造体のコピー
	clA = st_a;
	for(int i=0; i<10; i++){
		printf("%d", clA.a);
	}
}

void main(){

	A a;
	ST st_data[10];

	for(int i=0; i<10; i++){
		st_data.a=i+1;
	}

	a.Draw( st_data );

	getchar();
}


コンパイルすると
error C2440: '=' : 'ST' から 'ST [10]' に変換できません。
error C2664: 'A::Draw' : 1 番目の引数を 'ST [10]' から 'ST' に変換できません。

というエラーが表示されます。
どういうエラーが出ているかはわかるのですが、解決方法が思いつきません。
どうぞよろしくお願いします。

box

Re:構造体配列のコピーについて

#2

投稿記事 by box » 17年前

こういう風なことがしたかったのでしょうか。
いいかげんな回答で申し訳ありません。


#include <stdio.h>
#include <string.h>

struct ST {
	int a;
};

class A {
	ST clA[10];
public:
	void Draw(ST *st_a);
};

void A::Draw(ST *st_a)
{
	// 構造体のコピー
	//clA = st_a;
	memcpy(clA, st_a, sizeof(clA));
	
	for (int i = 0; i < 10; i++) {
		printf("%d\n", clA.a);
	}
}

int main(void)
{
	A a;
	ST st_data[10];
	
	for (int i = 0; i < 10; i++) {
		st_data.a = i + 1;
	}
	
	a.Draw(st_data);
	getchar();
	return 0;
}

アニィ

Re:構造体配列のコピーについて

#3

投稿記事 by アニィ » 17年前

ご解答ありがとうございます。
まさにこのような事がしたかったのです。
おかげさまで解決する事ができました。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る