Идентификатор Undefined C++, хотя у меня есть CPP и файл заголовка

У меня есть main.cpp файл и кучу других файлов cpp и заголовочных файлов, которые включены в main.cpp, В заголовочных файлах я использовал #indef, #define, а также #endif в нужном месте, и я также включил заголовочные файлы в main.cpp, Однако, когда я пытаюсь использовать функцию, которую я сделал в главном файле, она выдает ошибку "Идентификатор (имя-функции) не определен".

Например:

//main.cpp
#include "example.h"

int main(){
foo();

//example.cpp
example::foo(){
     //code
}

//example.h
#ifndef EXAMPLE_H
#define EXAMPLE_H

class example{
int foo();
}
#endif

Что я делаю неправильно? Я делаю вещи, которые не нужны?

1 ответ

Вызов foo(); вызывает эту ошибку. Чтобы позвонить example::foo функция, вам нужен объект типа example, Как это:

int main() {
    example ex;
    ex.foo();
}

Вы также должны сделать foo метод публичный, так что main можете использовать это:

class example {
public:
    void foo();
};

Пример:

Предположим, у меня есть следующая программа:

void foo() { // #1
    // typetype codecode;
}

class Example {
public:
    void foo();
};

Example::foo() { // #2
    // typetype codecode;
}

int main() {
    Example ex;

    foo(); // #1 gets called
    ex.foo(); // #2 gets called on object ex
}

Больше информации:

Чтобы лучше понять такие вещи, вы должны узнать об объектно-ориентированном программировании и классах. Пояснения к ООП включают эти сайты:

Я уверен, что вы можете найти гораздо больше сайтов, объясняющих ООП.

Другие вопросы по тегам