[解決済み] "戻り値の型が関数の型と一致しない "などのVSコンパイルエラーが発生する。
質問
数日前からC++を学び始め、今、初めてのプログラム、"phone-book"アプリを作ろうとしているところです。知り合いの名前が表示され、番号が必要な人の名前を入力すると、その人の番号が表示されます。
しかし、今、しばらくデバッグしていますが、私のコードのどこが悪いのか、まだわかっていません しかし、今しばらくデバッグしているのですが、私のコードのどこがおかしいのか、まだわかりません!明らかなことだと思うのですが、私が新しすぎて、それを理解できていないだけなのです。
#include <stdafx.h> // Visual Studio users need to uncomment this line
#include <iostream>
int nameAppears()
{
std::cout << "Alex" << std::endl;
std::cout << "Andre" << std::endl;
std::cout << "Guy" << std::endl;
std::cout << "Grand-ma" << std::endl;
std::cout << "Grand-pa" << std::endl;
std::cout << "Jérémy" << std::endl;
std::cout << "Manon" << std::endl;
std::cout << "Nathalie" << std::endl;
std::cout << "Stéphanie" << std::endl;
std::cout << "Oliver" << std::endl;
}
int enterName()
{
std::cout << "Enter the name you wish to obtain the number:";
int name;
std::cin >> name;
return name;
}
int link(name)
{
if (name == "Alex")
return "586 6532";
if (name == "Andre")
return "569 8522";
if (name == "Guy")
return "850 6589";
if (name == "Grand-ma")
return "482 4875";
if (name == "Grand-pa")
return "453 9963";
if (name == "Jérémy")
return "654 3828";
if (name == "Manon")
return "965 4541";
if (name == "Nathalie")
return "770 6916";
if (name == "Stéphanie")
return "546 5482 ";
if (name == "Oliver")
return "246 5554";
}
int printNumber (int number)
{
std::cout << "The number is: " << number << std::endl;
}
int main()
{
//Make all the names appear
nameAppears();
//Get User's input
int name = enterName();
//Link Name to number
int number = link(name);
//Print the desired number
printNumber(number);
}
Visual Studio 2013でこれをコンパイルしたときに出たエラーの一覧です。
- ソースファイル "stdafx.h"" を開くことができません。
- 識別子 "name" が未定義です" (2回連続)
- 戻り値の型が関数の型と一致しない" (10回連続)
- ""name": 宣言されていない識別子"
- ""link: 関数型イニシャライザは関数定義のように見えます"
- "項が1つの引数を取る関数として評価されない"
どのように解決するのですか?
どこから始めるか?
1. 名前が数字であるべき理由とは?
機能では
int enterName()
{
std::cout << "Enter the name you wish to obtain the number:";
int name;
std::cin >> name;
return name;
}
を挿入することになっています。
名前
という型がありますが
name
という変数が宣言されています。
int
(の型である)。
整数
数)。今の私の疑問は
なぜ人名が数字で表記されなければならないのか?
これを解決するには?
単純に 文字列 という型があります。
#include <string> // You have to include this header to use string object
// ...
std::string enterName()
{
std::cout << "Enter the name you wish to obtain the number:";
std::string name;
std::cin >> name;
return name;
}
注:標準入力から文字列を取得する方法については多くの考察がありますが、私はあなたのc++の先生ではありませんし、あなたの場合、その議論は今のあなたのスキルから非常にかけ離れていると思います。
2. C++は静的型付け言語である( 多かれ少なかれ ).
もう一つの問題はここです。
int link(name)
{
// do something ...
}
宣言関数の中で
name
は型がありません。これはエラーです。変数は引数として型を持っていなければなりません。
また、body 関数は " を返します。 文字列 "型です。
return "965 4541"; // return a const char[]
では、なぜ関数が
int
という型があります。
正しい形式です。
std::string link(const std::string& name) // declaration signature
3. そしてまた...
この関数でも、型がおかしい。
int printNumber (int number)
{
std::cout << "The number is: " << number << std::endl;
}
であるべきだ。
void printNumber (const std::string& number)
{
std::cout << "The number is: " << number << std::endl;
}
void
というのは、この関数は何も返さないので、return type として。
最終結論
言語に関する基本的なスキルが不足しているようですね。良いC++の本を勉強して、そこからコーディングを始めることをお勧めします。
関連
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】C++の余分な資格エラー
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】Enterキーを押して続行する
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み] mutable' キーワードには、const 関数で変数を変更できるようにする以外の目的があるのでしょうか?
-
[解決済み] コピーエリジョンと戻り値の最適化とは何ですか?
-
[解決済み] MakefileとCMakeを使ったコンパイルの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み】'cout'は型名ではない
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み] gdbを使用してもデバッグシンボルが見つからない
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】Enterキーを押して続行する