【发布时间】:2016-08-18 01:30:08
【问题描述】:
错误:`GameKey::getGameKeywords()' 的多重定义
GameKey.cpp 和 .h 会导致错误,而 ExitKey.cpp 和 .h 本质上是完全相同的类和标头,但不会产生错误。
(我知道使用命名空间 std 的全部内容)
//Function Declarations
#ifndef GAMEKEY_H
#define GAMEKEY_H
// C++ libraries
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;
class GameKey
{
private:
string keyString;
string lineData;
public:
// Default constructor
GameKey();
// Deconstructor
~GameKey();
// Get keywords
string getGameKeywords();
};
#endif
GameKey.cpp
//Function Definitions
#include "GameKey.h"
// Constructor
GameKey::GameKey()
{
}
// Deconstructor
GameKey::~GameKey()
{
}
// Get keywords
string GameKey::getGameKeywords()
{
ifstream infile;
infile.open("GameKey.txt");
while (getline(infile, lineData))
{
keyString.append(lineData);
keyString.append("\n");
}
infile.close();
return keyString;
}
ExitKey.h
//Function Declarations
#ifndef EXITKEY_H
#define EXITKEY_H
// C++ libraries
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;
class ExitKey
{
private:
string keyString;
string lineData;
public:
// Default constructor
ExitKey();
// Deconstructor
~ExitKey();
// Get keywords
string getExitKeywords();
};
#endif
ExitKey.cpp
//Function Definitions
#include "ExitKey.h"
// Constructor
ExitKey::ExitKey()
{
}
// Deconstructor
ExitKey::~ExitKey()
{
}
// Get keywords
string ExitKey::getExitKeywords()
{
ifstream infile;
infile.open("ExitKey.txt");
while (getline(infile, lineData))
{
keyString.append(lineData);
keyString.append("\n");
}
infile.close();
return keyString;
}
感谢您的帮助!
【问题讨论】:
-
您是否有另一个文件(不是
GameKey.cpp)定义了GameKey::getGameKeywords()? -
请发帖Minimal, Complete, and Verifiable example。无法在我的本地环境中重现(Windows 7,gcc 4.8.1,编译命令=
g++ ExitKey.cpp GameKey.cpp main.cpp -o main)main.cpp的内容是int main(){}。 -
@Rakete1111 不幸的是我不这么认为。
-
@MikeCAT TDM-GCC 4.9.2 64 位版本
-
@Sean 不要仅仅认为不是这样就跳过检查。
标签: c++ function header definition