2017-01-04 2 views
0

У меня есть файл main.cpp и множество других файлов cpp и файлов заголовков, которые включены в main.cpp. В файлах заголовков я использовал #indef, #define и #endif в нужном месте, а также заголовочные файлы в main.cpp. Однако, когда я пытаюсь использовать функцию, которую я сделал в основном файле, она передает мне ошибку «Идентификатор (имя_функции) undefined».Идентификатор Неопределенный C++ Хотя у меня есть 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 

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

+2

'foo()' fail, потому что 'foo' не определен. Может быть, вы мысленно путаете 'foo' с' example :: foo', это разные вещи. –

+0

И даже в этом случае 'foo'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ', потому что (a) экземпляр объекта и (b) Я думаю, вам нужно [достойная книга на C++] (https://stackoverflow.com/search?q=%5Bcpp%5D+book) – WhozCraig

ответ

2

Вызов 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 
} 

Дополнительная информация:

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

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