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も見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
秘密基地、どこに作った?
小さい頃、1度は誰もが作ったであろう秘密基地。 大人の今だからこそ言える、あなたの秘密基地の場所を教えてください!
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
Visual Studio strcpyについて
C言語・C++・C#
-
適切な変換関数が存在しない???
C言語・C++・C#
-
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
-
4
CString から LPCTSTRの型に変換
C言語・C++・C#
-
5
charからLPTSTRへの変換方法
C言語・C++・C#
-
6
Visual Studio 2010 professional でst
C言語・C++・C#
-
7
cout と cerrの違い
C言語・C++・C#
-
8
Run-Time Check Failure #3というエラーが出ます。
C言語・C++・C#
-
9
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
10
C++ で、「)」が必要 というエラー
C言語・C++・C#
-
11
deleteで開放するとエラーになる原因がわからない
C言語・C++・C#
-
12
フォーカスについてお教えください
C言語・C++・C#
-
13
クリティカルエラー Expression: (Buffer too small", 0)"
C言語・C++・C#
-
14
csvファイルを構造体に格納したいです
C言語・C++・C#
-
15
左側がクラス、構造体、共用体、ジェネリック型への
C言語・C++・C#
-
16
静的でないメンバ関数の呼び出しが正しくありません
C言語・C++・C#
-
17
バッファとは何ですか
C言語・C++・C#
-
18
c++std::string型をTCHARに変換したい!
C言語・C++・C#
-
19
C++で入力した文字列から数字を取り除くもしくは数字のみをのこす
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
適切な変換関数が存在しない???
-
バッチからsqlplusの接続エラー...
-
コンパイルできません。
-
デバッグ中のエラーのことで教...
-
RightとLeft関数のライブ...
-
visual C++ でビルドの中止がで...
-
Excelのエラーで困ってます。
-
WindowsからLinuxへの移植
-
fortranでプログラムを実行する...
-
ACCESSのDate関数のエラー表示...
-
LPCWSTRとchar
-
ユーザフォーム開くとエラーになる
-
visualstudioでコンパイルでき...
-
VBScriptのエラーの見つけ方及...
-
C++のコンパイラーでエラー原因...
-
visual C++ でaruduinoとシリア...
-
実行時のlibxxx.soのオープンエ...
-
sys/time.hのインクルードがで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
fortranでプログラムを実行する...
-
適切な変換関数が存在しない???
-
HEWを使用しているのですが、こ...
-
コンパイルできません。
-
バッチからsqlplusの接続エラー...
-
デバッグ中のエラーのことで教...
-
visual C++ でビルドの中止がで...
-
VB2008で定数に色の設定をした...
-
ビルド失敗 指定されたファイ...
-
Handlesについて
-
RightとLeft関数のライブ...
-
エラー 'iostream.h' : No su...
-
sys/time.hのインクルードがで...
-
DLL関数を使ったプログラム
-
Visual Studioのstrcpy_sについて
-
レコードセットをcloseする所で...
-
LPCWSTRとchar
おすすめ情報