0

私は現在 C++ で遊んでおり、C++ で作成した Tic Tac Toe バッチ コンソール ゲームを再構築しようとしていますが、エラーを取り除く方法がわからない壁にぶつかっていますTicTacToe.obj : error LNK2005: "class computer comp" (?comp@@3Vcomputer@@A) already defined in computer.obj。関数 computer の宣言をヘッダーから削除し、C++ で関数の定義を削除しようとしましたが、エラーは修正されませんでした。このエラーを削除する方法を見つけた唯一の方法は、オブジェクト名を削除することでした。これは、私がやりたくないことです。Web サイトhttp://www.cplusplus.com/doc/tutorial/classes/にある例を使用して、クラス コンピューターをセットアップしました。C++ についてもっと知りたいと思っているので、現在発生しているエラーや不要な関数について提供できる情報は、大歓迎です。

コード:

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);
}

コンピューター.cpp

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

computer::computer()
{
}

computer::~computer()
{
}

void computer::Select()
{
}

computer.h

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

追加情報:

Windows 7 を実行しているラップトップで Microsoft Visual Studio Professional 2013 を使用しています。

4

3 に答える 3

0

ヘッダーで定義compしているため、そのヘッダーを含むすべての .cpp で定義しているため、1 つの定義ルールに違反しています。

代わりに、ヘッダーで宣言できます。

extern computer comp;

そして、正確に 1 つの .cpp で定義します。

computer comp;

これにより、ヘッダーを含む任意の .cpp からアクセスできます。

于 2014-06-01T13:51:54.697 に答える