Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

Ситуация такая:

В цикле я читаю из текстового файла числа и на их основе создаю экземпляры следующего класса -

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.

Опубликовано

Ну очень много лишней работы Smile

# --- 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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...