错误:结构已在* .Obj中定义

时间:2014-10-08 19:45:00

标签: visual-c++

帮助,我正在使用VC ++,运行我的脚本时总是得到LNK2005和LNK1169错误,你能告诉我它为什么会发生以及如何修复它,谢谢! 代码:

在Main.cpp

#include "stdafx.h
#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
#include "Modifier.h"
using namespace std;
HWND myconsole = GetConsoleWindow();
HDC mydc = GetDC(myconsole);
int main()
{
if (Input.beg("Hello"))
{
    cout << "World";
}
    cin.ignore();
}

在“Modifier.cpp”

#include "stdafx.h"
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
struct {
    bool beg(string a)
    {
        string b;
        getline(cin, b);
        if (b == a)
        {
            return true;
        }
        else
        {

        }
    }
} Input;

在“Modifier.h”中

#include "Modifier.cpp"

1 个答案:

答案 0 :(得分:0)

您必须更改标头声明:您无意中在包含“Modifier.h”的每个.cpp中声明了一个不同的全局“输入”变量。

建议:

// Modifier.h
#ifndef MODIFER_H
#define MODIFIER_H

struct  Input {
    bool beg(string a)
    {
        string b;
        getline(cin, b);
        if (b == a)
        {
            return true;
        }
        else
        {

        }
    }
};
#endif

然后,在Modifier.cpp中:

#include "Modifier.h"

struct Input globalInput;

你应该在.h中包含.cpp。您应该在源文件中包含标题,反之亦然。

你绝对应该考虑使用“类”而不是“结构”。因为,坦率地说,这就是你的“输入”:只是一种方法,没有状态/没有数据。