我在返回多种类型时遇到了麻烦。我知道有一些人有这个问题,但我的不同。我使用的是头文件但他们并没有。所以这是我的代码。
//in Fruit.h
#include <string>
#include <tuple>
using namespace std;
class Fruit {
private:
string Fruitname;
int Fruitamount;
public:
Fruit(string name, int amount);
tuple(string, int) getFruitStats();
~Fruit();
};
在C ++文件中
//in Fruit.cpp
#include "Fruit.h"
#include <string>
#include <tuple>
using namespace std;
Fruit::Fruit(string name, int amount)
{
Fruitname = name;
Fruitamount = amount;
}
tuple<string,int> Fruit::getFruitStats() {
}
Fruit::~Fruit()
{
}
错误消息如下:
- 没有重载功能的实例&#34; Fruit :: Fruit&#34;匹配Fruit.cpp
中指定的类型第7行
- member&#34; Fruit :: string&#34;不是Fruit.cpp中的类型名称行7
- C2597非法引用非静态成员&#39; Fruit :: string&#39;第7行在Fruit.cpp
- C2146语法错误:缺少&#39;)&#39;在标识符&#39; name&#39;之前第7行在Fruit.cpp
- C2143语法错误:缺少&#39;;&#39;之前&#39; {&#39;第8行 in Fruit.cpp
- C2447&#39; {&#39;:缺少函数标题(旧式正式列表?)第8行在Fruit.cpp中
- class&#34; Fruit&#34;没有会员&#34; getFruitStats&#34;第12行在Fruit.cpp
- C2556&#39; std :: tuple Fruit :: getFruitStats(void)&#39 ;:重载函数的区别仅在于来自&#39; int Fruit :: getFruitStats(void)&#39;第12行在Fruit.cpp
- C2371&#39; Fruit :: getFruitStats&#39;:重新定义;不同的基本类型第12行在Fruit.cpp
- 类模板的参数列表&#34; std :: tuple&#34;在Fruit.h中缺少第13行
- 期待&#39;)&#39;第13行在Fruit.h
- 预计Fruit.h中的标识符行13
- C2955&#39; std :: tuple&#39;:使用类模板需要第13行中的模板参数列表
- C2143语法错误:缺少&#39;)&#39;之前&#39;,&#39; 13 在Fruit.h
- C2079&#39; Fruit :: string&#39;使用未定义的类&#39; std :: tuple&#39;第13行在Fruit.h
- C2062 type&#39; int&#39;意外13; Fruit.h中的
- C4430缺少类型说明符 - 假设为int。注意:C ++不支持Fruit.h中的default-int第13行
醇>
1 个答案:
答案 0 :(得分:4)
第一条错误消息是根本原因。
问题是声明和定义不匹配。在.h
文件中,您声明Fruit::getFruitStats()
返回int
。但是,在.cpp
文件中,您定义了Fruit::getFruitStats()
以返回tuple<string,int>
。
要解决此问题,请更改声明的返回类型以匹配定义。 (......反之亦然,只要它们匹配)
即。将int getFruitStats();
文件中的.h
更改为tuple<string,int> getFruitStats();