Гость Опубликовано 27 февраля, 2003 Жалоба Опубликовано 27 февраля, 2003 Ситуация такая: В цикле я читаю из текстового файла числа и на их основе создаю экземпляры следующего класса - class Node { public: inline Node(); Node(double, double, int); inline Node(double, double, int, double); inline double getX() { return x; }; inline double getY() { return y; }; private: inline void init(double a, double b, int c); double x, y, a; int number; Node* nodes[ maxNodes ]; Triangle* triangles[ maxTriangles ]; }; Все что я прочитываю, помещаю в глобальный объект vector points. Само чтение и помещение вот: ifstream in_file(filename1); string textline, x, y; Node* tmp; while ( getline(in_file, textline, '\n') ) { int i, begin; for ( i = 0; i < textline.length() && textline[ i ] == ' '; i++) ; begin = i; for ( ; i < textline.length() && textline[ i ] != ' '; i++) ; x = textline.substr(begin, i); y = textline.substr(i + 1, textline.length() - 1); tmp = new Node(atof(x.c_str()), atof(y.c_str()), points.size() + 1); points.push_back(tmp); Проблема заключается в том, что после выполнения points.push_back(tmp); points.size(), как и прежде, равняется нулю! В чем здесь дело? P.S. Опыт программирования в C++ у меня очень небольшой, так что если видите, что здесь можно было бы сделать что-то лучше, то говорите. Среда разработки - C++ Builder 6. Цитата
Гость Опубликовано 27 февраля, 2003 Жалоба Опубликовано 27 февраля, 2003 Ну очень много лишней работы # --- ttt.cc ------------------------- #include #include #include using namespace std; class ttt { double x_, y_; public: ttt() : x_(0.0), y_(0.0) {} ttt( double x, double y ) : x_(x), y_(y) {} void print() { cout << "x=" << x_ << "; y=" << y_ << ";" << endl; } }; int main() { vector arr; ifstream f( "input.f" ); while ( true ) { double x, y; f >> x >> y; if ( f.eof()|| f.bad() ) break; ttt* o_ptr = new(nothrow) ttt( x, y ); if ( o_ptr == 0 ) { cerr << "Cannot allocate ttt(" << x << ", " << y << ");"; } arr.push_back( o_ptr ); } vector::iterator it = arr.begin(); for ( ; it != arr.end(); ++it ) { ttt* o_ptr = *it; o_ptr->print(); delete o_ptr; } return 0; } // --- input.f -------------------------------- 111.0 222.0 333.0 444.0 555.0 666.0 777.0 888.0 999.0 111.0 222.0 333.0 // --- output -------------------------------- bash-2.05a$ ./a.out x=111; y=222; x=333; y=444; x=555; y=666; x=777; y=888; x=999; y=111; x=222; y=333; Успехов --- sas Цитата
Гость Опубликовано 1 марта, 2003 Жалоба Опубликовано 1 марта, 2003 Спасибо большое, все работает! P.S. Посоветуйте хорошую книжку по C++. Цитата
Гость Опубликовано 1 марта, 2003 Жалоба Опубликовано 1 марта, 2003 Строутструп последнее издание Успехов --- sas Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.