"Return Value Type Does Not Match the Function Type" and Other vs Compile Errors
I Started to Learn C++ a Few Days Ago and Now I'm Trying to Make My First Program Ever, a "Phone-Book" App. the Name of the People I Know Will Appear, I Will...
I started to learn C++ a few days ago and now I'm trying to make my first program ever, a "phone-book" app. The name of the people I know will appear, I will enter the name of the person I need the number and their number will appear.
But now I am debugging for a while and I still don't get what's wrong with my code! I'm pretty sure it's obvious though, I'm just too new to get it.
#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);
}
Here is a list of all the errors I got while compiling this on Visual Studio 2013:
- "cannot open source file "stdafx.h""
- "identifier "name" is undefined" (2 times in a row)
- "return value type does not match the function type" (10 times in a row)
- ""name": undeclared identifier"
- ""link: function-style initializer appears to be a function definition"
- "term does not evaluate to a function taking 1 arguments"
3 Answers
Where to start?
1. Why a name should be a number?
In your function:
int enterName()
{
std::cout << "Enter the name you wish to obtain the number:";
int name;
std::cin >> name;
return name;
}
The user is supposed to insert a name but the type of a name variable has been declared as int (which is a type for a integer number). My question now is: why the name of a person should be codified as a number?
How to solve this?
Simply using a string type.
#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;
}
Note: there are many considerations about how to get a string from the standard input, but I'm not your c++ teacher, and in your case I think that argument is very far from your skills now.
2. C++ is statically type language (more or less).
Another problem is here:
int link(name)
{
// do something ...
}
In your declaration function name has not type. This is an error! A variable must to have a type as argument.
Moreover your body function returns a "string" type:
return "965 4541"; // return a const char[]
So why you've declared your function returns a int type?