首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义对类中函数的引用

未定义对类中函数的引用
EN

Stack Overflow用户
提问于 2013-09-01 10:29:45
回答 5查看 185关注 0票数 0

main.cpp:

代码语言:javascript
复制
#include <iostream>
#include "pokemonList.h"
void pokemonLookup();

int main() {
    pokemonLookup();
    return 0;
}

void pokemonLookup() {
    pokemonList pL;
    std::cout<<std::endl<<"What Pokemon do you want to look up? ";
    std::string pokemonLookup;
    std::cin>>pokemonLookup;
    pL.displayPokemon(pokemonLookup);
}

pokemonList.h:

代码语言:javascript
复制
#ifndef POKEMONLIST_H
#define POKEMONLIST_H
#include <iostream>

class pokemonList
{
    private:
        struct pokemonTemplate {
            std::string pokemonName;
            std::string pokemonMoves[3];
            int pokemonLevel;
            int baseATK;
            int baseDEF;
            int baseSPATK;
            int baseSPDEF;
            int baseSPEED;
            };
        pokemonTemplate bulbasaur;
        pokemonTemplate pikachu;
    public:
        void displayPokemon(std::string pokemon);
    protected:
};

#endif // POKEMONLIST_H

pokemonList.cpp:

代码语言:javascript
复制
#include "pokemonList.h"
/*
pokemonTemplate* bulbasaur() {
    bulbasaur.pokemonName = "Bulbasaur";
    bulbasaur.pokemonMoves[3];
    bulbasaur.pokemonLevel = 5;
    bulbasaur.baseATK = 10;
    bulbasaur.baseDEF = 10;
    bulbasaur.baseSPATK = 10;
    bulbasaur.baseSPDEF = 10;
    bulbasaur.baseSPEED = 10;
}

pokemonTemplate* pikachu() {
    pikachu.pokemonName = "Pikachu";
    pikachu.pokemonMoves[3];
    pikachu.pokemonLevel = 5;
    pikachu.baseATK = 8;
    pikachu.baseDEF = 10;
    pikachu.baseSPATK = 12;
    pikachu.baseSPDEF = 6;
    pikachu.baseSPEED = 15;
}
*/
void displayPokemon(std::string pokemon) {
    std::cout<<std::endl<<"Looking up: " + pokemon<<std::endl;
}

我意识到在pokemonList.cpp文件中我有一堆坏代码被注释掉了,这不是这个问题的目的。当我尝试编译时,我在main.cpp中得到一个错误,说明:

代码语言:javascript
复制
D:/CodeBlocks/Projects/RelearningCPlusPlus/main.cpp:15: undefined reference to `pokemonList::displayPokemon(std::string)'
EN

回答 5

Stack Overflow用户

发布于 2013-09-01 10:35:22

您定义了一个函数displayPokemon(),但它没有定义为成员函数。要将其定义为类定义之外的成员函数,您需要提到类名:

代码语言:javascript
复制
void pokemonList::displayPokemon(std::string pokemon) {
    std::cout<<std::endl<<"Looking up: " + pokemon<<std::endl;
}
票数 6
EN

Stack Overflow用户

发布于 2013-09-01 10:35:59

它应该是

代码语言:javascript
复制
void pokemonList::displayPokemon(std::string pokemon){....
票数 2
EN

Stack Overflow用户

发布于 2013-09-01 10:35:45

您需要更改以下内容:

代码语言:javascript
复制
void displayPokemon(std::string pokemon) {

要这样做:

代码语言:javascript
复制
void pokemonList::displayPokemon(std::string pokemon) {
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18554660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档