nixp.ru v3.0

20 октября 2017,
пятница,
02:57:31 MSK

DevOps с компанией «Флант»
hapchu написал 27 апреля 2004 года в 13:06 (610 просмотров) Ведет себя неопределенно; открыл 1 тему в форуме, оставил 2 комментария на сайте.

Может я что-то не так понимаю про конструкторы?

Появилась проблема, сначала все было ОК, компилировалось и выполнялось, потом вдруг стало выдавать сегментэйшн фолт.

Результаты отладки в GDB:

int main() {

Openbox::RC rc;

—>

Openbox::RC::RC() {

SingleNode* new_node = new Openbox::NumberNode(xml_doc,

«resistance/strength», «resistance to screen border (pixels)»,

11);

—>

Openbox::NumberNode::NumberNode(xmlDocPtr doc, std::string path, std::string desc, int value)

: SingleNode(doc, path, desc), i_value(value) {

—>

Openbox::SingleNode::SingleNode(xmlDocPtr doc, std::string path, std::string desc)

: Node(doc, path, desc) {}

—>

Openbox::Node::Node(xmlDocPtr doc, std::string path, std::string desc)

: xml_doc(doc), str_path(path.c_str()), str_desc(desc.c_str()),

xml_node(find_node(xml_doc)), str_name((const char*) xml_node->name) {}

—>

xmlNodePtr Openbox::Node::find_node(xmlDocPtr doc) {

int sz = str_path.size(); // ! здесь

и вот в этом месте, Segmantation fault

смотрю значение str_path._M_dataplus._M_p

= (char*) 0×69666E6F (Address 0×69666E6F out of bounds)

(отладка в врапере Insight для GDB)

Что не так с [std::string str_path] ?

Это protected член класса Node.

Наследование такое

class Node;

class SingleNode: public Node;

class NumberNode: public SingleNode;

class RC — сам по себе

myst

А компилятор какой? Какая стандартная библиотека?

hapchu

Библиотека

Мне уже подсказали на другом форуме.

Я считал, что переменные инициализируются в том порядке, в каком они указаны в списке инициализации в определении метода, а оказалось, что в том порядке, в каком указаны в описании класса.

hapchu

в смысле дело не в библиотеке

anonymous

парни, подскажите пожалуйста, как реализовать в С++ очень большое число (от -10^40 до +10^40) а то очень надо а я только начинаю…

Uncle Theodore
IrKa
парни, подскажите пожалуйста, как реализовать в С++ очень большое число (от -10^40 до +10^40) а то очень надо а я только начинаю…

Строкой из 41 character' а. Перегрузишь стандартные операции (+/-/*//) — и все дела.

А вообще, лучше начать новую тему, а не писАть в старые.

Good Luck,

UT