“返回值类型与函数类型不匹配”和其他VS编译错误

时间:2016-08-22 18:34:07

标签: c++

我几天前开始学习C ++,现在我正在尝试制作我的第一个程序,一个“电话簿”应用程序。我知道的人的名字会出现,我会输入我需要的人的姓名,他们的号码会出现。

但是现在我正在调试一段时间,我仍然没有得到我的代码有什么问题!我很确定这很明显,但我太新了,无法得到它。

test = " anything goes here, STR1 GET_ME STR2, anything goes here STR1 GET_ME2 STR2"
pattern="STR1 (.*?) STR2"
result <- regmatches(test,regexec(pattern,test))
result[[1]][2]
[1] "GET_ME"

以下列出了我在Visual Studio 2013上编译时遇到的所有错误:

  • “无法打开源文件”stdafx.h“”
  • “标识符”名称“未定义”(连续2次)
  • “返回值类型与函数类型不匹配”(连续10次)
  • “”name“:未声明的标识符”
  • “”link:function-style initializer似乎是一个函数定义“
  • “术语不评估为采用1个参数的函数”

3 个答案:

答案 0 :(得分:1)

从哪里开始?

1。为什么名称应该是数字?

在你的功能中:

int enterName()
{
    std::cout << "Enter the name you wish to obtain the number:";
    int name;
    std::cin >> name;
    return name;
}

用户应该插入名称,但name变量的类型已声明为int(这是整数的类型< / em>数字)。我现在的问题是:为什么一个人的名字应该编成一个数字?

如何解决这个问题?

只需使用string类型。

#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函数返回“ string ”类型:

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作为返回类型,因为你的函数没有返回任何内容。

最终结论

我发现你的语言基线技能不足。我建议你学习一本好的C ++书籍,并从中开始编码。

答案 1 :(得分:0)

  1. “标识符”名称“未定义”您没有在函数链接中声明变量名称,正确的是int main (string name),您需要string

  2. “返回值类型与函数类型不匹配”,例如使用函数int link(string name),如果要返回电话号码或者将其返回为8506589(无空格)或者您更改了将类型返回到字符串,以便它考虑一个字符串并接受诸如 - 或空格之类的东西。

  3. 3-不需要stdafx标头,删除此行并谷歌以了解更多信息。

    4-您将名称声明为int,您应该声明为字符串。

    老兄,你的代码有很多问题,你应该考虑去看一些youtube视频你是想自己学习并先看一些c编程的视频,试试新浪的视频...我只帮助了你的几个错误。

答案 2 :(得分:0)

使用using namespace stdstring name您正在使用一个整数。整数仅适用于数字,不适用于字符串。 string name; cin >> name