无法将函数定义包含到另一个源文件中

时间:2020-03-20 04:19:50

标签: c++

大家晚上好 我现在正在上c ++课,老师希望我将函数定义包含到另一个主函数中。但是,每次执行此操作时,都会出现此错误:

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2005 "unsigned int speed" (?speed@@3IA) already defined in Sourcjhkhje.obj   Project4    C:\Users\muhammad\source\repos\Project4\Project4\TestBicycle.obj    1   


Severity    Code    Description Project File    Line    Suppression State
Error   LNK1169 one or more multiply defined symbols found  Project4    C:\Users\muhammad\source\repos\Project4\Debug\Project4.exe  1   

我要做的就是将函数定义移到一个源中,将主定义移到另一个源中。有人知道导致此问题的原因吗?

这些就是我的文件。

标题1:

#pragma once
size_t speed(0);
size_t GetSpeed();
const size_t MINspeed(10);
const  size_t MAXspeed(40);

标题2:

#pragma once
#include <iostream>
#include <iomanip>
using namespace std;

标题3:

#include "BicycleLibIncludes.h"

void SetSpeed(size_t sp);
void DefaultSetSpeed(size_t s);
void DistanceTravelled(size_t x);
size_t GetSpeed();
size_t GetMinSpeed();
size_t GetMaxSpeed();
void GetSelectedSpeed();

源1:

#include "BicycleLibIncludes.h"
#include "BicyclePrototypes.h"
/*void SetSpeed(size_t sp)
{
    //cout << "Enter the current speed:";
    //cin >> sp;
    if ((sp >= 10) && (sp <= 40))
    {
        speed = sp;
    }
    else
    {
        cout << "This value is too high/low!";
    }

}*/
size_t GetSpeed()
{
    return (speed);
}
size_t GetMinSpeed()
{
    return size_t(MINspeed);
}
size_t GetMaxSpeed()
{
    return size_t(MAXspeed);
}

void DefaultSetSpeed(size_t s = 20)
{
    speed = s;
}


void GetSelectedSpeed()
{
    string speedunit;
    while (true)
    {
        cout << "Enter M or K for mph or kmh respecitvely. Hit anything else to quit.";
        cin >> speedunit;
        if (speedunit == "M" || speedunit == "K")
        {
            break;
        }
        else
        {
            continue;
        }
    }
    if (speedunit == "M")
    {
        cout << speed;


    }

    if (speedunit == "K")
    {
        double toKmPerHour = 1.61;
        double speedinKmPerHour = speed * toKmPerHour;
        cout << speedinKmPerHour << "\n";
        std::cout << setprecision(3) << speedinKmPerHour << "\n";
        cout << static_cast<int>(speedinKmPerHour) << "\n";
        cout << static_cast<int>(speedinKmPerHour + 0.5) << "\n";
        cout << floor(speedinKmPerHour) << "\n";
        cout << ceil(speedinKmPerHour) << "\n";


    }


}

void DistanceTravelled(size_t x)
{
    static size_t accessCounter;
    static int s;
    cout << "Total distance for all trips so far: " << s << "\n";
    s += x;
    cout << "distance travelled for this trip was:" << x;
    cout << "\nTotal distance for all trips so far: " << s << "\n";
    s += x;
    accessCounter++;
    cout << "Number of times you've used this program:" << accessCounter;

}

int main()

{


    DefaultSetSpeed();
    cout << GetSpeed() << "\n";
    DefaultSetSpeed(28);
    cout << GetSpeed() << "\n";
    cout << "Enter the speed you want to set:";
    size_t userinput;
    cin >> userinput;
    SetSpeed(userinput);
    cout << "Current Speed = " << GetSpeed()
        << "\nMAXspeed = " << GetMaxSpeed()
        << "\nMINspeed = " << GetMinSpeed() << "\n";
    system("pause");
    system("cls");

    GetSelectedSpeed();

    cout << "First trip:\n";
    DistanceTravelled(5);

    cout << "\nSecond trip:\n";
    DistanceTravelled(10);

    cout << "\nThird trip:\n:";
    DistanceTravelled(15);

}

源2 :(这只是一个测试)

#include "BicycleLibIncludes.h"
#include "BicyclePrototypes.h"
void SetSpeed(size_t sp)
{
    //cout << "Enter the current speed:";
    //cin >> sp;
    if ((sp >= 10) && (sp <= 40))
    {
        speed = sp;
    }
    else
    {
        cout << "This value is too high/low!";
    }

}

谢谢。

0 个答案:

没有答案