如何返回多种类型& C ++中多个文件中的值

时间:2017-01-03 01:42:10

标签: c++

我在返回多种类型时遇到了麻烦。我知道有一些人有这个问题,但我的不同。我使用的是头文件但他们并没有。所以这是我的代码。

//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()
{
}

错误消息如下:

  1. 没有重载功能的实例&#34; Fruit :: Fruit&#34;匹配Fruit.cpp
  2. 中指定的类型第7行
  3. member&#34; Fruit :: string&#34;不是Fruit.cpp中的类型名称行7
  4. C2597非法引用非静态成员&#39; Fruit :: string&#39;第7行在Fruit.cpp
  5. C2146语法错误:缺少&#39;)&#39;在标识符&#39; name&#39;之前第7行在Fruit.cpp
  6. C2143语法错误:缺少&#39;;&#39;之前&#39; {&#39;第8行 in Fruit.cpp
  7. C2447&#39; {&#39;:缺少函数标题(旧式正式列表?)第8行在Fruit.cpp中
  8. class&#34; Fruit&#34;没有会员&#34; getFruitStats&#34;第12行在Fruit.cpp
  9. C2556&#39; std :: tuple Fruit :: getFruitStats(void)&#39 ;:重载函数的区别仅在于来自&#39; int Fruit :: getFruitStats(void)&#39;第12行在Fruit.cpp
  10. C2371&#39; Fruit :: getFruitStats&#39;:重新定义;不同的基本类型第12行在Fruit.cpp
  11. 类模板的参数列表&#34; std :: tuple&#34;在Fruit.h中缺少第13行
  12. 期待&#39;)&#39;第13行在Fruit.h
  13. 预计Fruit.h中的标识符行13
  14. C2955&#39; std :: tuple&#39;:使用类模板需要第13行中的模板参数列表
  15. C2143语法错误:缺少&#39;)&#39;之前&#39;,&#39; 13 在Fruit.h
  16. C2079&#39; Fruit :: string&#39;使用未定义的类&#39; std :: tuple&#39;第13行在Fruit.h
  17. C2062 type&#39; int&#39;意外13; Fruit.h中的
  18. 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();