nixp.ru v3.0

29 мая 2017,
понедельник,
08:57:25 MSK

DevOps с компанией «Флант»
anonymous написал 4 июля 2005 года в 01:11 (1148 просмотров) Ведет себя неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.

Имеется:

#include

struct str {

};

class cls {

std::vectorv(10);

};

void cls::f()

{

v.resize(v.size()+1)

}

Ругается следующим образом:

invalid data member initialization

(use `=' to initialise static data members)

Если пробую объявить этот член так:

std::vectorv;

не ругается, компилируется. Но — segmentation fault (core dump)

rgo


std::vectorv(10)


-- это декларация, которая подразумавает вызов конструктора. Но C++ не java и для членов класса конструктор надо вызывать из конструктора класса:

...
class cls {
    std::vector v;
public:
    cls () : v(10) {}
};
...
anonymous
rgo

std::vectorv(10)

-- это декларация, которая подразумавает вызов конструктора. Но C++ не java и для членов класса конструктор надо вызывать из конструктора класса:

...
class cls {
    std::vector v;
public:
    cls () : v(10) {}
};
...

Огромное спасибо Вам