gpt4 book ai didi

C++/Eclipse undefined reference 问题

转载 作者:行者123 更新时间:2023-11-28 04:00:46 24 4
gpt4 key购买 nike

我遇到了 Eclipse/C++ 中明显的链接器错误(“ undefined reference ”)的问题。下面显示的所有类都可以正常编译,除了一个 PlayGame.cpp,它给出了“ undefined reference ”错误(也在下面显示)。

下面是相关的类和代码片段。

PlayerFactory.h

播放器工厂.cpp

游戏.h

游戏.cpp

// constructor for game:

Game::Game (const PlayerFactory& factory)

{

cout << " constructor" << endl;

}

游戏.cpp

// start of code for game where error occurs

#include "Game.h"

#include "PlayerFactory.h"

int main() {
try

{

PlayerFactory factory;

Game game (factory); <== undefined reference error
...

上面一行给出了错误“对 `Game(PlayerFactory const&)' 的 undefined reference ”

导致此错误的原因是什么,如何更正?

最佳答案

class 声明的默认可见性是私有(private)的。所以 PlayerPlayerFactory 类的所有成员函数都是 private —— 客户端无法访问。您需要将它们公开。

Player.h

#ifndef PLAYER_H 
#define PLAYER_H
class Player
{
public:
virtual ~Player() {
cout << "Player destructor called" << endl;

}
virtual void Player::PlayerMakeMove(){
cout << "make move" << endl;
}


};
#endif // PLAYER_H

PlayerFactory.h

#ifndef PLAYERFACTORY_H
#define PLAYERFACTORY_H
class PlayerFactory
{
public:
virtual ~PlayerFactory() {
cout << "PlayerFactory destructor called" << endl;
}

virtual std::auto_ptr<Player> PlayerFactory::MakePlayerX() const{

return PlayerFactory::MakePlayer('x');
}

virtual std::auto_ptr<Player> PlayerFactory::MakePlayerO() const{
return PlayerFactory::MakePlayer('o');

}

std::auto_ptr<Player> PlayerFactory::MakePlayer (char letter) const{
auto_ptr<Player> pt( new Player() );
return pt;
}
};
#endif // PLAYERFACTORY_H

此外,Game::Play() 缺少 return 语句。

Outcome Game::Play() {  
cout << " play" << endl;
return PlayerXWon;
}

请根据需要添加所需的 header 、前向声明和using 语句(我在这里跳过它们)。

关于C++/Eclipse undefined reference 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/763573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com