本文介绍了错误:类计算机comp已经在computer.obj中定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在玩C ++,并试图重建一个Tic Tac Toe批处理控制台游戏,我用C ++,但打了一堵墙,在那里我不知道如何摆脱的错误 TicTacToe.obj:error LNK2005:已经在computer.obj 中定义的class computer comp(?comp @@ 3Vcomputer @@ A)。我已经尝试从头中删除函数计算机的声明,并在C ++中的函数的定义,但没有修复错误。我唯一的方法,我想出了如何删除这个错误是删除对象名称,我不想这样做。我使用网站上提供的示例来设置类计算机。您可以提供任何错误,我目前有任何信息,或任何功能我可能不需要是最确定的欢迎,因为我想知道更多关于C ++。

I am currently playing with C++, and attempting to rebuild a Tic Tac Toe batch console game I made in C++, but have hit a wall, where I cannot figure out how to get rid of the error TicTacToe.obj : error LNK2005: "class computer comp" (?comp@@3Vcomputer@@A) already defined in computer.obj. I have tried removing the declaration of the function computer from the header, and the definition of the function in the C++, but that didn't fix the error. The only way I figured out how to remove this error was to remove the object name, which I kind of don't want to do. I used the example given on the website http://www.cplusplus.com/doc/tutorial/classes/ to set up the class computer. Any information you can provide on any errors that I currently have, or any functions I may not need are most definately welcome, as I am wanting to know much much more about C++.

CODE:

TicTacToe.cpp

TicTacToe.cpp

// TicTacToe.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <Windows.h>
#include "computer.h"
#include <iostream>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
    comp.Select();
    Sleep(1000);
}

computer.cpp

computer.cpp

#include "stdafx.h"
#include "computer.h"
#include <iostream>
using namespace std;

computer::computer()
{
}

computer::~computer()
{
}

void computer::Select()
{
}

computer.h

computer.h

#pragma once
class computer
{
public:
    computer();
    ~computer();
    void Select(void);
} comp;

额外资讯:

Microsoft Visual Studio Professional 2013在运行Windows 7的笔记本电脑上。

I am using Microsoft Visual Studio Professional 2013 on a laptop running Windows 7.

推荐答案

正如您包含标题在两个模块中都有h computer.cpp 和 TicTacToe.cpp 对象的相同定义 comp

As you included header "computer.h" in both modules computer.cpp and TicTacToe.cpp then the both modules contain the same definition of object comp

pragma once
class computer
{
public:
    computer();
    ~computer();
    void Select(void);
} comp;

因此链接器会报错。

仅在一个cpp模块中定义对象。

Define the object only in one cpp module. The header should contain only the class definition.

例如

computer.h

computer.h

#pragma once
class computer
{
public:
    computer();
    ~computer();
    void Select(void);
};

TicTacToe.cpp

TicTacToe.cpp

// TicTacToe.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <Windows.h>
#include "computer.h"
#include <iostream>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
    computer comp;

    comp.Select();
    Sleep(1000);
}

这篇关于错误:类计算机comp已经在computer.obj中定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-15 06:25