缺少C ++显式类型(假设为“int”)

时间:2013-10-18 06:02:34

标签: c++ class header compiler-errors int

嗨我的c ++代码有错误。我有2个.cpp文件和1个.h文件,我试图从头文件中访问5个字符串和1个int,但是我得到一个错误,上面写着“显式类型丢失(假设为'int')。

我还有一些其他错误:缺少类型说明符,Shops :: Items重定义;不同的基本类型,重载函数只有返回类型不同,声明不兼容。

以下是我的文件:

UserChoice.h

#include <iostream>
#include <string>

using namespace std;

#ifndef USERCHOICE_H
#define USERCHOICE_H

class Shops
{
public:

    double Items(string, string, string, string, string, int);

    int main()
    {
        std::cout << newItem1;
    }

private:
    string newItem1;
    string newItem2;
    string newItem3;
    string newItem4;
    string newItem5;
    int newItems;

};
#endif

Items.cpp

#include "UserChoice.h"

Shops::Items(string Item1, string Item2, string Item3, string Item4, string Item5, int     Items)
{
    newItem1 = Item1;
    newItem2 = Item2;
    newItem3 = Item3;
    newItem4 = Item4;
    newItem5 = Item5;
    newItems = Items;
}

Source.cpp

#include "UserChoice.h";
#include <string>

int main()
{
    string Item1;
    string Item2;
    string Item3;
    string Item4;
    string Item5;
    int items;

    std::cout << "What what you like? Chicken, Meat, Fish, Carrot or Apple?\n";
    std::cin >> Item1;
    std::cout << "\nAnything else?\n";
    std::cin >> Item2;
    if(Item2 == "nothing else")
    {

    }
    std::cout << "\nAnything else?\n";
    std::cin >> Item3;
    std::cout << "\nAnything else?\n";
    std::cin >> Item4;
    std::cout << "\nAnything else?\n";
    std::cin >> Item5;
    std::cout << "\nAnything else?\n";
}

错误行

Shops::Items(string Item1, string Item2, string Item3, string Item4, string Item5, int Items)

所有代码尚未完成,所以我希望您能帮我找到并修复这些错误。 提前致谢,如果您需要更多信息,请问我。

2 个答案:

答案 0 :(得分:6)

您缺少Shops :: Items的实现文件(cpp)中的返回类型,根据您在头文件中的内容,这将是一个双倍。您遇到的其他错误很可能是相关的。

在您的类中有一个名为main的方法有点令人不安,因为它通常是用于程序入口点的函数名。

答案 1 :(得分:3)

您在Items.cpp中的定义中缺少返回类型:

double Shops::Items(string Item1, string Item2, string Item3, string Item4, string Item5, int Items)
{
    //...
}

您还需要为Shops::Items和类“main函数返回一些值。

关于命名:在类中复制“普通”main函数看起来很奇怪,并且看起来很奇怪,有一个名称与类名称完全相同的参数。它确实有效,但我会在代码审查FWIW中标记它。 :)