Score:-1

C ++ การอ้างอิงที่ไม่ได้กำหนดไปยังฟังก์ชัน

ธง ng

ฉันใช้ Ubuntu 16.04 เมื่อฉันพยายามคอมไพล์โปรแกรมด้วย

g++ -g main.cpp -o หลัก

นี่คือเวอร์ชัน g++ ของฉัน

g ++ -- รุ่น
g++ (อูบุนตู 9.3.0-17ubuntu1~20.04) 9.3.0
ลิขสิทธิ์ (C) 2019 Free Software Foundation, Inc.
นี่เป็นซอฟต์แวร์ฟรี ดูแหล่งที่มาสำหรับเงื่อนไขการคัดลอก ไม่มี
การรับประกัน; ไม่แม้แต่สำหรับการค้าหรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ

ฉันได้รับข้อผิดพลาดในการรวบรวมนี้

main.cpp:8: การอ้างอิงที่ไม่ได้กำหนดถึง `Helper::IsStringNumeric(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Collect2: ข้อผิดพลาด: ld ส่งคืนสถานะการออก 1 รายการ

main.cpp:

#include "Helper.h"
#รวมถึง <iostream>
#รวม <เวกเตอร์>


int หลัก ()
{
    std::cout << ตัวช่วย :: IsStringNumeric ("200");
}

Helper.h

#ifndef HELPER_H
#กำหนด HELPER_H

#รวม <เวกเตอร์>
#รวมถึง <สตริง>
ตัวช่วยชั้น
{
ส่วนตัว:
    /* ข้อมูล */
สาธารณะ:
    
   บูลคงที่ IsStringNumeric(const std::string &str);
   
};

#เอนดิฟ

Helper.cpp

#include "Helper.h"
#รวมถึง <สตริง>
#include <อัลกอริทึม>
ตัวช่วยบูล :: IsStringNumeric (const std :: สตริง & str)
{
    std::string::const_iterator วนซ้ำ = str.begin();
    
    ในขณะที่ (iterator != str.end() && std::isdigit(*iterator))
    {
        ++ตัววนซ้ำ;
    }
    กลับ !str.empty() && iterator == str.end();
}

ไฟล์ cpp และส่วนหัวของฉันดูเหมือนถูกต้อง ดังนั้นฉันจึงไม่แน่ใจว่าเหตุใดฉันจึงได้รับข้อผิดพลาด

Score:2
ธง hr

การเพิ่ม #include "Helper.h" ของคุณ main.cpp ทำให้ ประกาศ ของ ตัวช่วย::IsStringNumeric คอมไพเลอร์มองเห็นได้ แต่คุณยังต้องคอมไพล์ Helper.cpp ไปยังรหัสวัตถุเพื่อที่จะทำให้ คำนิยาม ของ ตัวช่วย::IsStringNumeric ใช้ได้เมื่อคุณเชื่อมโยงของคุณ หลัก โปรแกรม.

คุณสามารถคอมไพล์แต่ละหน่วยการแปลเป็นรหัสวัตถุ ไฟล์ แล้วเชื่อมโยงพวกเขา:

g++ -g -o main.o -c main.cpp
g++ -g -o Helper.o -c Helper.cpp
g++ main.o Helper.o -o หลัก

หรือ (สำหรับโปรแกรมอย่างง่าย) ทำทุกอย่างในขั้นตอนเดียว

g++ -g main.cpp Helper.cpp -o หลัก

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา