C++の参照を使って以下のソースを試したのですが、
memmoveの引数のところでエラーが出ます。
memmoveの引数はポインタ型で合いません。
実体コピーしたい場合、どのようにすればよいのでしょうか?
const AA &aとすれば、a自体が関数内で書き換わる心配がないので、
C++の参照型は、ポインタより安全と理解しているのですが
その認識は間違っていないでしょうか?
struct aa{
int x;
int y;
}AA;
void test(AA &a)
{
AA b;
memmove(b, a, sizeof(AA));
}
void main(){
AA c;
test(c);
}
No.1ベストアンサー
- 回答日時:
> 実体コピーしたい場合、どのようにすればよいのでしょうか?
単純に代入する。
void test(AA &a)
{
AA b;
a = b;
}
(今回の例なら大丈夫ですが)C++でmemcpyとかmemmoveとかをむやみに使うと危険だと思います。(C言語の遺産です)
なお、memmoveの引数はポインタを渡す必要があります>マニュアル参照。
> const AA &aとすれば、a自体が関数内で書き換わる心配がないので、
これはそう。
> C++の参照型は、ポインタより安全と理解しているのですが
でも、ポインタでも const AA* const aなどできるので、
直接の理由にはならない。
> その認識は間違っていないでしょうか?
ゆえに、間違いを含んでいる。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- その他(プログラミング・Web制作) pythonのmap、結果の利用は1度だけ? 5 2022/06/11 12:33
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C pointer? or... 2 2022/03/29 00:47
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
fopne で失敗する原因
-
LPSTR型の初期化について
-
C言語でのconstを返す関数
-
トリプルポインタが必須!とな...
-
メモリのアドレスからの値の取...
-
str[i] は *(str + i) と同義で...
-
ハンドル、アドレス、ポインタ...
-
ExcelVBAでのkernel32(64bit)
-
エラーの意味
-
連結リスト 要素の入れ替え
-
型変換について
-
NULLとブランクの違い
-
関数の引数をvoid*でキャストする
-
アプリを32bitから64bit移行
-
TCHAR文字列内の検索について
-
IStream / VBA
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
init関数の意味
-
戻り値で構造体を返すことは可...
-
fopne で失敗する原因
-
C言語の関数と配列に関する質問
-
Run-Time Check Failure #3とい...
-
LPSTR型の初期化について
-
ExcelVBAでのkernel32(64bit)
-
main(int argc,char **argv[])...
-
アプリを32bitから64bit移行
-
連結リスト 要素の入れ替え
-
ハンドルはポインタか
-
Cで作成したDLL関数をVBから呼...
-
C言語でのconstを返す関数
-
NULLとブランクの違い
-
エラーの意味
-
DLL<->VB間での受け渡し(文字...
-
ハンドル、アドレス、ポインタ...
-
【C言語】戻り値が構造体の関数
おすすめ情報