
C++を勉強しています。
参考書(橋本麻奈さんの「やさしいC++」です。)を用いていますが、次のようなサンプルコードを入力、実行するとstrcpyとstrcatの部分に、エラーが出ました。
「オーバーロードされた関数 "strcpy_s" のインスタンスが引数リストと一致しません」や「strcat_s関数に 2 個の引数を指定できません」と表示されます。原因と解決法を教えてください。
また、参考書に書いてある程度には関数、オーバーロード、インスタンスについて学んだつもりなのですが、なぜstrcpy_s関数がオーバーロードされたと判断されたのか分かりません。
長文になりましたが、この2点についてご回答よろしくお願いします。
以下コードです
#include<iostream>
#include<cstring>
using namespace std;
class Car {
private:
int carnum;
double cargas;
char* pName;
public:
Car(char* pN, int n, double g);
Car(const Car& c);
~Car();
Car& operator=(const Car& c);
};
Car::Car(char* pN, int n, double g) {
pName = new char[strlen(pN) + 1];
strcpy_s(pName, pN); //←このような部分すべてでエラーが出ます。
carnum = n;
cargas = g;
cout << pName << "を作成しました\n";
}
Car::Car(const Car& c) {
cout << c.pName << "で初期化します\n";
pName = new char[strlen(c.pName) + strlen("のコピー1") + 1];
strcpy_s(pName, c.pName);
strcat_s(pName, "のコピー");
carnum = c.num;
cargas = c.gas;
}
(以下コード略)
No.1ベストアンサー
- 回答日時:
似たような壁にぶちあたっている人がいるようです。
テンプレート使った2引数のものは、第1引数が配列変数名でないと要素数が取れないんじゃないかと思いますが…。
動的確保したポインタだった場合、ポインタからではサイズが取得できないかと。
となると、テンプレートでも適用できないので、引数2つを受け取るstrcpy_s()のオーバーロードと……。
回答ありがとうございます!
まだまだ僕の知識に至らぬ点が多々あったようですね、、、
指摘してくださった点もふまえてやっていきたいと思います。
ありがとうございました
No.4
- 回答日時:
>質問文では最初に「strcpyとstrcatの部分に、エラーが出ました」って書いているにもかかわらず, プログラムには strcpy も strcat も出てきていないところに注目.
strcpy()/strcat()でコンパイルしたらstrcpy_s()/strcat_s()使え。
という警告(エラーだっけ?)が出たので、機械的に置換してみました。
って感じでしょうかね。
第5版では引数3つのパターンになっているようですし。
回答ありがとうございます!
指摘していただいた通りです、、、
まだまだ未熟もいいところですね、、、精進します
なんとか解決しました!
No.2
- 回答日時:
ソースコードは、間違っていませんか?
ここより、ソースコードをダウンロードしてみました。
http://mana.on.coocan.jp/yasac.html
の「セキュリティ強化版サンプルコード(第5版)
ダウンロードしたソースと質問にあったソースと異なります。
一度ダウンロードして、
Sample3.cpp
YCCSample\15\Sample3.cpp
を確認してみてください。
回答ありがとうございます!
僕の使っている参考書は第4版でしたので、何かしら今のバージョンに対応できていなかったのかもしれませんね、、、
試してみます
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
このQ&Aを見た人はこんなQ&Aも見ています
-
Visual Studio strcpyについて
C言語・C++・C#
-
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
-
4
charからLPTSTRへの変換方法
C言語・C++・C#
-
5
適切な変換関数が存在しない???
C言語・C++・C#
-
6
デバッグ中のエラーのことで教えてください。
C言語・C++・C#
-
7
CString から LPCTSTRの型に変換
C言語・C++・C#
-
8
ダイアログ表示時にチェックボックスにチェックされている状態にするには?
C言語・C++・C#
-
9
ボタンの配置を変更したい
C言語・C++・C#
-
10
char*を初期化したいのですが
C言語・C++・C#
-
11
sys/time.hのインクルードができない
C言語・C++・C#
-
12
_tcscpy_s(wcscpy_s)の第二引数って
C言語・C++・C#
-
13
ファイルの先頭行を全て削除したい
Windows Vista・XP
-
14
Visual Studio 2010 professional でst
C言語・C++・C#
-
15
ハンドルされていない例外が発生しました
C言語・C++・C#
-
16
GetDlgItemTextについて
C言語・C++・C#
-
17
VC++でUTF-8のファイルを出力したい
C言語・C++・C#
-
18
左側がクラス、構造体、共用体、ジェネリック型への
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
コンパイルできません。
-
ビルド失敗 指定されたファイ...
-
Visual Studioのstrcpy_sについて
-
Excelのエラーで困ってます。
-
C2146を回避するにはどうしたら...
-
LPCWSTRとchar
-
HEWを使用しているのですが、こ...
-
EXEで実行すると発生するORA:06...
-
適切な変換関数が存在しない???
-
VisualC++でエラーが大量に
-
WindowsからLinuxへの移植
-
レコードセットをcloseする所で...
-
キーの自動入力
-
fortranでプログラムを実行する...
-
error C2143: 構文エラー の対処法
-
DLL関数を使ったプログラム
-
visual C++ でビルドの中止がで...
-
IOCTL_CDROM_RAW_RAEDで生デー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
バッチからsqlplusの接続エラー...
-
visual C++ でビルドの中止がで...
-
適切な変換関数が存在しない???
-
VB2008で定数に色の設定をした...
-
デバッグ中のエラーのことで教...
-
fortranでプログラムを実行する...
-
RightとLeft関数のライブ...
-
ビルド失敗 指定されたファイ...
-
Handlesについて
-
HEWを使用しているのですが、こ...
-
DLL関数を使ったプログラム
-
キーの自動入力
-
Visual Studioのstrcpy_sについて
-
コンパイルできません。
-
multiple definitionというエラー
-
ACCESSのDate関数のエラー表示...
-
WindowsからLinuxへの移植
おすすめ情報