Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > При компиляции выводит *.h в консоль????


Автор: Killer_13 31.10.2010, 22:13
Вот, компилирую программу, а оно мне в консоль header выдает, что такое?

Код

/**************************************************************************
  FifoClassTest_2.h

  Testen der Container-Klasse mit Fifo-Eigenschaften

  Dr. B. Lang, FH OS
  12.04.2001: Erste Version
  24.03.2003: Ueberarbeitung fuer OOP-Praktikum SS2003
  19.03.2004: Angepasst an GNU 3.xx Compiler
  23.03.2005: Ueberarbeitung fuer OOP-Praktikum SS2005
  31.03.2006: Nun werden Referenzen von FifoClass gefangen

  To Do:
  - nichts bekannt
/*************************************************************************/
#include<iostream>
using namespace std;
#include "FifoClass.h"

//
// Testprogramm fьr Methode "mergesort": Textdatei bitte als Argument ьbergeben
//
int main(int argc, char *argv[]) {

  //
  // Sortieren
  //
  try {
    cout << ">Fifo aus Textdatei fuellen" << endl;
    FifoClass s( (argc>1) ? argv[1] : "FifoClass.h" ); // Fifo einrichten und aus Datei fьllen
    cout << ">Fifo sortieren" << endl;
    //s.mergesort();                          // Elemente im Fifo sortieren
    cout << ">Fifo ausgeben" << endl;
    while (s>0) {                           // Elemente ausgeben
      cout << static_cast<string>(s) << endl;
    }
  } catch (FifoClass& f) {
    cout << "> Failure: Fifo Objekt sollte hier keine Ausnahme werfen:" << endl;
    cout << " >>> " << f.Error() << endl;
    return 3;
  } catch (...) {
    cout << "> Failure: Unbekannte Ausnahme" << endl;
    return 3;
  }
  return 0;
}



Код

using namespace std;

class FifoClass {
private:

    class Stack {
    private:
        string line;
        Stack *next;
    public:
        string getLine() const {return line;}
        Stack* getNext() const {return next;}
        void setNext(Stack* ptr){next=ptr;}
        Stack(string str);
        ~Stack(){};
    };

    unsigned int counter;
    Stack *root;
    char* err;

public:
    FifoClass();
    FifoClass(const char*);
    ~FifoClass();

    FifoClass & operator<<(const string&);
    FifoClass & operator>>(string&);
    operator string();
    operator int() const;
    const char* Error() const;
    FifoClass& push(const string&);
    FifoClass& pop(string&);
    
};



Пасиб.

Автор: Леопольд 31.10.2010, 22:25
Цитата(Killer_13 @  31.10.2010,  22:13 Найти цитируемый пост)
что такое?
凡类的实现?
http://translate.google.ru/?hl=ru&tab=wT#zh-CN|ru|

Автор: Killer_13 31.10.2010, 22:41
Не знаю, а вы откуда это взяли? :(

Автор: Леопольд 31.10.2010, 22:42
Цитата(Killer_13 @  31.10.2010,  22:41 Найти цитируемый пост)
Не знаю, а вы откуда это взяли? :(
http://translate.google.ru/?hl=ru&tab=wT#zh-CN|ru|

Автор: Killer_13 31.10.2010, 22:47
"Где реализация класса" 
ну вот.
Код

#include<iostream>
#include <fstream>
#include "FifoClass.h"

using namespace std;

//-----------------------------------------------------------------------------

FifoClass::FifoClass() {
    root = NULL;
    counter = 0;
}

//-----------------------------------------------------------------------------

FifoClass::FifoClass(const char* datName) {
    root = NULL;
    counter = 0;
    string row;
    ifstream aus(datName);

    if (!aus.is_open()) {
        cout << "Fehler! Konnte Datei nicht oeffnen!" << endl;
        throw *this;
    }

    while (!aus.eof()) {
        getline(aus, row, '\n');
        *this << row;
    }
}

//-----------------------------------------------------------------------------

FifoClass& FifoClass::operator <<(const string& str) {

    return push(str);
}

//-----------------------------------------------------------------------------

FifoClass& FifoClass::push(const string& val) {

    Stack *element, *temp;

    try {
        element = new Stack(val);
        counter++;
    } catch (bad_alloc) {
        err = "Kein Speicher vorhanden";
        throw *this;
    } catch (...) {
        err = "Unbekannter Fehler beim Anlegen";
        throw *this;
    }
    if (NULL == root) {
        root = element;
    } else {
        temp = root;
        while (NULL != temp->getNext())
            temp = temp->getNext();
        temp->setNext(element);
        //cout << temp->line << endl;
    }

    return *this;
}

//-----------------------------------------------------------------------------

FifoClass& FifoClass::operator >>(string& str) {

    str = static_cast<string> (*this);
    return *this;
}

//-----------------------------------------------------------------------------

FifoClass::operator string() {

    string tempStr;
    Stack *temp;

    if (counter == 0) {
        err = "Stack underflow";
        throw *this;
    }
    tempStr = root->getLine();

    temp = root->getNext();
    delete root;
    root = temp;
    counter--;

    return tempStr;
}

//-----------------------------------------------------------------------------

FifoClass::operator int () const {
    return counter;
}

//-----------------------------------------------------------------------------

FifoClass::~FifoClass() {

    Stack *current = NULL,
            *to_del = root;
    while (to_del != NULL) {
        current = current->getNext();
        cout << "Del El= " << to_del->getLine() << endl;
        delete to_del;
        to_del = current;
    }
    root = NULL;

}

//-----------------------------------------------------------------------------

FifoClass::Stack::Stack(string str) {
    line = str;
    next = NULL;
}

//-----------------------------------------------------------------------------

const char* FifoClass::Error() const {
    return err;
}

//-----------------------------------------------------------------------------





Добавлено через 48 секунд
Юмористы. smilesmilesmile  smile 

Автор: Леопольд 31.10.2010, 22:50
Killer_13, завтра посмотрю, если раньше не ответят и память не подведёт smile
P.S. bез реализации класса, ответить на вопрос мог только телепат...

Автор: Crafty 31.10.2010, 22:51
Не обязательно быть телепатом.

Killer_13,  ты как программу запускаешь?

Добавлено через 41 секунду
Думаю проблема вот в этой строке 
Код

FifoClass s( (argc>1) ? argv[1] : "FifoClass.h" ); // Fifo einrichten und aus Datei fьllen

Автор: Killer_13 31.10.2010, 22:54
А я то думаю, откуда вы взяли там китайский, - хороший юмор.
Программа работает. но класс и его реализацию тестировал в другом мейне.
А этот мейн мне выбрасывает, вот такое.. :(
Пасиб.

Автор: Леопольд 31.10.2010, 22:54
Цитата(Crafty @  31.10.2010,  22:51 Найти цитируемый пост)
Не обязательно быть телепатом.

Killer_13,  ты как программу запускаешь? 
Подразумевалось что это вся доступная информация...  smile  

Автор: Killer_13 31.10.2010, 22:55
ТОЧНООООО!!!! УУУУУ БЛИН ТУПАЯ БАШКА, ТАМ ДОЛЖЕН БЫТЬ ДРУГОЙ ФАЙЛ!!!
СПАСИБ, вопрос решен. smilesmilesmilesmile

Автор: xvr 1.11.2010, 11:48
Не при компиляции, а при исполнении. И не компилятор, а ваша программа. Почему - потому что вы ее сами попросили ( http://forum.vingrad.ru/index.php?showtopic=313966&view=findpost&p=2239948 )

Автор: Killer_13 1.11.2010, 11:51
Пасиб за поправки, - учту.
Да уже понял почему. smilesmilesmile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)