gpt4 book ai didi

c++ - 编译为可执行文件时 undefined reference

转载 作者:行者123 更新时间:2023-11-30 01:11:32 26 4
gpt4 key购买 nike

当我尝试将所有目标文件编译成可执行文件时,出现错误

lab5.o:lab5.cpp:对“Card::suitMap”的 undefined reference

我认为这是正确链接依赖项的问题,但我真的不知道如何验证我是否在正确的轨道上。

这是包含 main 函数的源文件:

#include "Card.h"
#include "Deck.h"
#include <iostream>

using namespace std;

int main()
{
Deck* deck1 = new Deck();
Deck* deck2 = new Deck();

for(int i = 0; i < deck1->deck.size(); i++)
{
Card card = deck1->draw();
cout << card.getSuit() << " " << card.getValue() << endl;
}

deck2->shuffle();
for(int i = 0; i < deck2->deck.size(); i++)
{
Card card = deck2->draw();
cout << card.getSuit() << " " << card.getValue() << endl;
}
}

这是我的 Card.h,其中包含 suitMap

#ifndef CARD_H
#define CARD_H
#include <string>
#include <map>

class Card {
private:
int value;
int suit;
public:
std::map <int, std::string> suitMap;
Card(int value, int suit);
int getValue() { return this->value; }
std::string getSuit() { return this->suitMap.find(this->suit)->second; }
};

#endif

我不确定我的 makefile 是否包含问题,但这里也是

CC=g++
CFLAGS=-c -Wall -g -std=c++11
LDFLAGS=
SOURCES=lab5.cpp Card.cpp Deck.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=lab5

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@

.cpp.o:
$(CC) $(CFLAGS) $< -o $@

clean:
rm -f *.o $(EXECUTABLE)

最佳答案

您一定有 suitMap 以前表示为 static,并且在更改后不知何故没有获得干净的构建。请务必在修改 header 后执行完全干净的构建。

关于c++ - 编译为可执行文件时 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36019318/

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