2

このプログラムをコンパイルしようとすると、次のエラーが発生します。

    Undefined symbols for architecture x86_64:
  "Character::setTime(int)", referenced from:
      awesome(Character)    in ccmsAc4F.o
  "Character::getMoney()", referenced from:
      _main in ccmsAc4F.o
  "Character::setMoney(double)", referenced from:
      awesome(Character)    in ccmsAc4F.o
  "Character::Character()", referenced from:
      _main in ccmsAc4F.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

文字は正しくコンパイルされ、エラーはありません。問題は、オブジェクトを参照として渡そうとしているようです。以下は私のプログラムです:

#include <cstdlib>
#include "Character.h"
#include <iostream>

using namespace std;

void awesome(Character& character);

int main() {
    Character userCharacter;
    awesome(userCharacter);
    cout << userCharacter.getMoney();
    return 0;
}

void awesome(Character& character)
{
    character.setTime(0);
    character.setMoney(0.00);
}

誰かが私が間違っていることについて何か洞察を持っていますか?最終的に、より大きなプログラムでは、参照を使用して、すでにインスタンス化されているオブジェクトを編集したいと思います。参照が正しい方法だと思います。どんな助けでも大歓迎です。

4

2 に答える 2

1

それらはリンカ エラーです。CharacterCharacter.oのメソッドを実装するか、プロジェクトにリンクするのを忘れています。

Character::setTime(int) { /* body ?! */ }
Character::getMoney() { /* body ?! */ }
Character::setMoney(double) { /* body ?! */ }
Character::Character() { /* body ?! */ }
于 2013-03-04T07:09:16.757 に答える
0

Character.o を生成する Character.cpp をコンパイルする必要があります。これにより、クラス Character がリンカに認識されるプロジェクトに最終的にリンクされます。その後、このリンク エラーはなくなります。

于 2013-03-04T07:55:26.937 に答える