对班级卡的不确定引用
undefined reference to class Card
我正在尝试编译我的项目,但是每次都有呼叫卡figurecard类时,编译器会显示以下错误:
bin/FigureCard.o: In function `FigureCard::FigureCard()':
/users/studs/bsc/2016/dalitroz/workspace/ass1/src/FigureCard.cpp:5: undefined reference to `Card::Card()'
bin/FigureCard.o: In function `FigureCard::FigureCard(Figure, Shape)':
/users/studs/bsc/2016/dalitroz/workspace/ass1/src/FigureCard.cpp:6: undefined reference to `Card::Card(Shape)'
bin/FigureCard.o: In function `FigureCard::~FigureCard()':
/users/studs/bsc/2016/dalitroz/workspace/ass1/src/FigureCard.cpp:10: undefined reference to `Card::~Card()'
bin/FigureCard.o: In function `FigureCard::toString[abi:cxx11]()':
/users/studs/bsc/2016/dalitroz/workspace/ass1/src/FigureCard.cpp:26: undefined reference to `Card::getCapitalShape[abi:cxx11]()'
/users/studs/bsc/2016/dalitroz/workspace/ass1/src/FigureCard.cpp:28: undefined reference to `Card::getCapitalShape[abi:cxx11]()'
/users/studs/bsc/2016/dalitroz/workspace/ass1/src/FigureCard.cpp:30: undefined reference to `Card::getCapitalShape[abi:cxx11]()'
/users/studs/bsc/2016/dalitroz/workspace/ass1/src/FigureCard.cpp:31: undefined reference to `Card::getCapitalShape[abi:cxx11]()'
bin/FigureCard.o:(.rodata._ZTV10FigureCard[_ZTV10FigureCard]+0x28): undefined reference to `Card::getShape()'
bin/FigureCard.o:(.rodata._ZTI10FigureCard[_ZTI10FigureCard]+0x10): undefined reference to `typeinfo for Card'
这是我的makefile:
CC = g++
CFLAGS = -g -Wall -Weffc++ -std=c++11
LFLAGS = -L/usr/lib
# All Targets
all: reviiyot
# Tool invocations
# Executable "reviiyot" depends on the files reviiyot.o and run.o.
reviiyot: bin/reviiyot.o bin/Card.o bin/Hand.o bin/Deck.o bin/Player.o bin/NumericCard.o bin/FigureCard.o
@echo 'Building target: reviiyot'
@echo 'Invoking: C++ Linker'
$(CC) -o bin/Card.o bin/Hand.o bin/Deck.o bin/Player.o bin/reviiyot.o bin/NumericCard.o bin/FigureCard.o $(LFLAGS)
@echo 'Finished building target: reviiyot'
@echo ' '
# Depends on the source and header files
bin/reviiyot.o: src/reviiyot.cpp
$(CC) $(CFLAGS) -c -Iinclude -o bin/reviiyot.o src/reviiyot.cpp
bin/Card.o: src/Card.cpp
$(CC) $(CFLAGS) -c -Iinclude -o bin/Card.o src/Card.cpp
bin/NumericCard.o: src/NumericCard.cpp
$(CC) $(CFLAGS) -c -Iinclude -o bin/NumericCard.o src/NumericCard.cpp
bin/FigureCard.o: src/FigureCard.cpp
$(CC) $(CFLAGS) -c -Iinclude -o bin/FigureCard.o src/FigureCard.cpp
bin/Hand.o: src/Hand.cpp
$(CC) $(CFLAGS) -c -Iinclude -o bin/Hand.o src/Hand.cpp
bin/Deck.o: src/Deck.cpp
$(CC) $(CFLAGS) -c -Iinclude -o bin/Deck.o src/Deck.cpp
bin/Player.o: src/Player.cpp
$(CC) $(CFLAGS) -c -Iinclude -o bin/Player.o src/Player.cpp
#Clean the build directory
clean:
rm -f bin/*
这是H文件(card.h):
#ifndef CARD_H_
#define CARD_H_
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
enum Shape {
Club,
Diamond,
Heart,
Spade
};
enum Figure {
Jack,
Queen,
King,
Ace
};
class Card {
private:
Shape shape;
public:
Card();
Card(Shape myShape);
virtual string toString() = 0; //Returns the string representation of the card "<value><shape>" exp: "12S" or "QD"
virtual ~Card();
virtual Shape getShape();
virtual int getType(int n) const =0;
string getCapitalShape();
};
class FigureCard : public Card {
private:
Figure figure;
public:
FigureCard();
FigureCard(Figure myFigure, Shape myShape);
virtual ~FigureCard();
string toString() override;
Figure getFigure() const ;
int getType(int n)const override;
};
#endif
class.cpp:
#include "../include/Card.h"
using namespace std;
Card::Card(): shape(Club){
}
Card::Card(Shape myShape) : shape(myShape){
}
//////check
Card:: ~Card(){}
Shape Card::getShape()
{
return shape;
}
//////check
string Card:: getCapitalShape(){
if(shape== Club)
return "C";
else if (shape == Diamond)
return "D";
else if (shape == Heart)
return "H";
else return "S";
}
string Card::toString() {
return getCapitalShape();
}
和figurecard:
#include "../include/Card.h"
FigureCard::FigureCard (): Card(), figure(Jack){}
FigureCard::FigureCard(Figure myFigure, Shape myShape) : Card(myShape), figure(myFigure) {
}
FigureCard:: ~FigureCard()
{}
Figure FigureCard::getFigure() const
{
return figure;
}
int FigureCard::getType(int n) const
{
return figure+1+n;
}
string FigureCard ::toString() {
if(figure== Jack)
return "J"+Card::getCapitalShape();
else if (figure == Queen)
return "Q"+Card::getCapitalShape();
else if (figure == King)
return "K"+Card::getCapitalShape();
else return "A"+Card::getCapitalShape();
}
希望帮助,谢谢:)
您将bin/Hand.o bin/Deck.o bin/Player.o bin/reviiyot.o bin/NumericCard.o bin/FigureCard.o
链接到bin/Card.o
更改:
$(CC) -o bin/Card.o bin/Hand.o bin/Deck.o bin/Player.o bin/reviiyot.o bin/NumericCard.o bin/FigureCard.o $(LFLAGS)
to
$(CC) -o reviiyot bin/Card.o bin/Hand.o bin/Deck.o bin/Player.o bin/reviiyot.o bin/NumericCard.o bin/FigureCard.o $(LFLAGS)
相关文章:
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 列表 iter 不取消引用 使用列表进行插入排序
- 不确定如何装饰我的C++库代码以在 C 中使用
- C++功能泄漏内存,我是C++新手,不确定如何解决
- "错误 C0000:语法错误,令牌"<EOF>"处出现意外$end,并且不确定
- 为什么我不能引用指向实例化对象的函数的指针?
- 我不确定如何引用此神经网络训练方法中的权重
- makefile对我的名称空间对象/函数/构造函数的不确定引用
- liberial对符号的不确定引用
- 为每个抽象函数定义主体后,对VTable的不确定引用
- 即使我的函数全部定义,也会在C 中获得不确定的引用
- 使用C和C 一起使用函数错误的不确定引用
- C 对CODE :: morsecode()的不确定引用和对Code :: AlphaCode()的未定义引用
- 在代码块中的SDL_SHOWSIMPLEMESSAGEBOX中,令人困惑的错误,不确定的引用和未定义的引用
- 在初始评估列表中引用类成员是不确定的行为吗?
- 对班级卡的不确定引用
- Arduino不确定对操作员的引用
- 在标题文件中列出的对象,但在CPP文件中却不确定引用
- 如果没有使用使用代码的链接,则对G 中的静态常规成员的不确定引用
- 我不确定为什么我会收到 NULL 指针取消引用错误