Создание текстового редактора в c ++ без использования графической библиотеки [функция является необъявленной ошибкой] - PullRequest
2 голосов
/ 18 сентября 2011

Я создаю texteditor в c ++ [non gui], пока я закончил с этим кодом .. я получаю две необъявленные ошибки ... Почему?

#include <iostream>
#include <fstream>

using namespace std;


int main()
{
    int op;
    cout<<"do you want to open example.txt or overwrite?\nIf you want to overwrite enter 1 , if you want to view it enter 2. :\n";
    cin>>op;
    if(op==1)
    {
        edit();
    }
    else if(op==2)
    {
        open();
    }
}

void edit()
{
    int op;
    string x;
    ofstream a_file("example.txt" , ios::app);
    cout<<"HEY ENTER SOME TEXT TO BE WRITTEN TO EXAMPLE.txt [created by rohan bojja]\n--------------------------------------------------------------------------------\n";
    getline ( cin , x);
    a_file<<x;
    cout<<"want to type in an other line?\n1 for YES, 2 for NO";
    cin>>op;
   while(op==1)
   {
       a_file<<"\n";
       edit;
   }
   cout<<"Do you want to quit?\n1 for YES , 2 for NO";
    cin>>op;
    if (op==2)
    {
    edit;
    }
}
void open()
{
    int op;
    ifstream a_file("example.txt");
    cout<<"You are now viewing example.txt [created by rohan bojja]\n--------------------------------------------------------------------------------\n";
    cout<<a_file;
    cout<<"Do you want to quit?\n1 for YES , 2 for NO";
    cin>>op;
   if(op==2)
    {
        open;
    }
}

но при компиляции я получаю ошибку [CodeBlocks Build Log]:

F:\Projects\c++\TextEditor\texteditor.cpp: In function 'int main()':
F:\Projects\c++\TextEditor\texteditor.cpp:14: error: 'edit' was not declared in this scope
F:\Projects\c++\TextEditor\texteditor.cpp:18: error: 'open' was not declared in this scope

Ответы [ 3 ]

4 голосов
/ 18 сентября 2011

Ваша основная функция не может видеть функции редактирования и открытия, потому что они появляются после основной. Вы можете исправить это одним из следующих способов:

1) Перемещение функций редактирования и открытия над основными; или

2) Добавление прототипа для редактирования и открытия над основным. Добавьте эту строку кода перед main, но после использования пространства имен std:

void edit();
void open();
1 голос
/ 18 сентября 2011

Компилятор C ++ - это однопроходный компилятор.Это означает, что он читает сверху вниз и переводит ваш код.Если вы используете функцию (или любой другой символ), компилятор должен знать о ней, прежде чем она достигнет ее.

Теперь у вас есть две опции: либо поставить main в edit и open,или напишите так называемое предварительное объявление:

void edit();
void open();

Это, в основном, функция, которую вы имеете без своего тела.Обратите внимание, что такие вещи помещаются в файлы .h (заголовки), когда у вас есть несколько исходных файлов.

0 голосов
/ 18 сентября 2011

Вам необходимо объявить символы (функции, переменные и т. Д.) Перед их использованием.Чтобы исправить вашу проблему, заранее объявите ваши функции.

#include <...>
using namespace std;

void edit();
void open();

int main ()
{
    // ...
}

void open ()
{
    // ...
}

void edit ()
{
    // ...
}
...