【问题标题】:Linker error: "Undefined symbols for architecture x86_64"链接器错误:“架构 x86_64 的未定义符号”
【发布时间】:2017-10-27 04:13:43
【问题描述】:

我正在研究一个骰子类,它允许用户输入骰子的面数并输出每个骰子的滚动数和结果数。我对课程非常陌生,我知道我把它们搞砸了,但现在无法通过它们,因为链接器在 Xcode 和代码块中给了我一个错误。

确切的错误是:

Undefined symbols for architecture x86_64:
  "GameDie::GameDie()", referenced from:
      _main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这是我的程序代码:

 #include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int x = 0;
int sides;

class GameDie
{
public:
    GameDie();
    int roll();
    void getNumSides(int numSides);
    void getNumRolls();
private:
    int numRolls;
    int numSides;
};


int main()
{
    srand(time(0));
    cout << "Enter number of sides: ";
    cin >> sides;

    GameDie die1;
    die1.roll();
    die1.getNumSides(sides);
    die1.getNumRolls();

    return 0;
}


int GameDie::roll()
{
    return (rand() % sides) + 1;
}

void GameDie::getNumSides(int sides)
{
    numSides = sides;
}

void GameDie::getNumRolls()
{
    x++;
    cout << "Roll " << x << " of die with " << sides << " sides";
}

【问题讨论】:

  • int roll() { ... }int GameDie::roll() { ... }? getNumSides 你做对了,为什么其他成员函数不做?
  • 你需要输入void GameDie::getNumRolls()
  • 好消息@Someprogrammerdude。修复了它,虽然它对链接器问题没有影响。
  • 也修复了另一个@yacc,谢谢。更新了错误消息,但不知道那是指什么...

标签: c++ xcode linker


【解决方案1】:

不太确定这个模具类应该如何运行,但我采用了您的代码并尽可能少地进行更改以使其正常运行。这主要是对方法/成员函数的误解。我希望这会有所帮助。

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int x = 0;
int sides;

class GameDie
{
public:
    GameDie();
    int roll();
    void getNumSides(int numSides);
    void getNumRolls();
private:
    int numRolls;
    int numSides;
};


int main()
{
    srand(time(0));
    cout << "Enter number of sides: ";
    cin >> sides;

    GameDie die1;
    die1.roll();
    die1.getNumSides(sides);
    die1.getNumRolls();

    return 0;
}

GameDie::GameDie()
{
    numSides = 0;
}

int GameDie::roll()
{
    return (rand() % sides) + 1;
}

void GameDie::getNumSides(int sides)
{
    numSides = sides;
}

void GameDie::getNumRolls()
{
    x++;
    cout << "Roll " << x << " of die with " << sides << " sides";
}

【讨论】:

  • 啊,现在很明显了。出于某种原因,我正在阅读的这本书直到下一节才显示这样的例子。感谢@Roy Lara 和大家的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-12
  • 2017-02-15
  • 1970-01-01
  • 2019-12-05
  • 2023-03-23
相关资源
最近更新 更多