LINUX.ORG.RU

Пиши на похапешечке. Указателей тебе не понять никогда.

anonymous ()

Индус, ты опять тут? Возьми учебник и читай пока бан не схватил. Кресты — это не PHP чтобы с наскоку разобраться.

Ты просто декларировал указатель, но забыл выделить ему память через new.

//my.cpp
vecstr = new std::vector<std::string>();
vecstr->push_back("vector");
EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 1)

А создавать объекты кто будет? New там всякие для кого придумали?

grondek ()

FIXED

//my.h

//my.cpp
std::vector<std::string> vecstr;
vecstr.push_back("vector");

Ты объявил указатель и не проинициализировал его. Указатель содержит случайные данные, с чего ты решил, что он указывает на экземпляр класса std::vector<std::string> ?

m0rph ★★★★★ ()
Последнее исправление: m0rph (всего исправлений: 1)
Ответ на: комментарий от EXL

Спасибо.

Индус, ты опять тут? Возьми учебник и читай

Читаю, но страуструпа не понимаю, сами виноваты, нефиг его советовать новичкам. Так что индуса ты долго видеть будешь, пока не выучу :)

ioexception ()
Ответ на: комментарий от post-factum

Ты намекаешь на RAII и *_ptr? Боюсь это только больше запутает ТС. А преподу его лаба с умными указателями может не понравиться и он заставить его переделать «по старому».

EXL ★★★★★ ()
Ответ на: комментарий от ioexception

Читаю, но страуструпа не понимаю

Почитай Липмана.

ymuv ★★★★ ()
Ответ на: комментарий от post-factum

ссылки и RAII

Есть, и что? Как это влияет на размещение в хипе?

// а, ты про смарты...

Stil ★★★★★ ()
Последнее исправление: Stil (всего исправлений: 1)
Ответ на: комментарий от Stil

Потому что есть умные указатели и make_shared/make_unique.

Begemoth ★★★★★ ()
Ответ на: комментарий от EXL

А преподу его лаба с умными указателями может не понравиться и он заставить его переделать «по старому».

Это он у препода выяснит, но зачем же тут учить плохому?

Begemoth ★★★★★ ()
╔═════════════════════════════════════════╗
║                                         ║
║ ioexception объявил неделю C++ на лоре. ║
║                                         ║
║     Количество тредов с тэгом c++       ║
║           увеличилось вдвое.            ║
║                                         ║
║                 ╔═════╗                 ║
║                 ║ O K ║                 ║
║                 ╚═════╝                 ║
╚═════════════════════════════════════════╝ 	
Shadow1251 ()

В чем ошибка?

В ДНК.

anonymous ()
Ответ на: комментарий от ioexception

но страуструпа не понимаю, сами виноваты, нефиг его советовать новичкам.

Страуструп подходит новичкам. Дело в тебе. Зачем тебе C++?

anonymous ()

Мля, ну может все же полистаете уже книгу по c++? Сколько можно засирать ЛОР подобными вопросами?

andreyu ★★★★★ ()
Ответ на: комментарий от post-factum

Потому что есть ссылки и RAII.

Дык для shared_ptr того же объект через нью создавать.

Или ты за повсеместный переход на мув семантик?

yoghurt ★★★★★ ()
Ответ на: комментарий от yoghurt

Дык для shared_ptr того же объект через нью создавать.

Есть make_shared.

anonymous ()
Ответ на: комментарий от yoghurt

Или ты за повсеместный переход на мув семантик?

Именно. Там, где это возможно, конечно.

post-factum ★★★★★ ()
Ответ на: комментарий от anonymous

Страуструп подходит новичкам

Ты ему ещё стандарт почитать посоветуй. Не знаю, кто ТСу посоветовал Страуструпа, но это была жестокая и совершенно не смешная шутка.

Gvidon ★★★★ ()

В чем ошибка?

В воспитании.

asaw ★★★★★ ()

Судя по всему, ты даже си не знаешь, выучи уже языки, а то скоро тебя забанят.

Freyr69 ★★★ ()

Я за бан.

Наплодил тупых тем, с вопросами, на которые ответы есть в любом учебнике. Но он думать не хочет... нет, надо чтобы ему рассказывали.

invy ★★★★★ ()
Ответ на: комментарий от Freyr69

Это корявый синтаксис C и ничего более, тяжелое наследие.

Begemoth ★★★★★ ()
Ответ на: комментарий от backburner

Тип: указатель на std::vector. Когда '*' относится к переменной, это уже разыменовывание.

Учи матчасть

#include <stdio.h>

int main (int argc, char *argv[])
{
  char* a, b, c;
  printf("%d, %d, %d\n", sizeof(a), sizeof(b), sizeof(c));
  return 0;
}
/tmp $ ./a.out 
8, 1, 1
yoghurt ★★★★★ ()
Ответ на: комментарий от ckotinko

а хренли тогда ему new посоветовали?

Не всё так однозначно, см.

EXL ★★★★★ ()
Ответ на: комментарий от yoghurt

Я знаю матчасть. Больше одного объявления в строке не пишу, поэтому проблем не имею.

backburner ()
Ответ на: комментарий от Freyr69

Вообще-то это именно ссылочный тип, нет?

я первую строку неудачно непроцитировал

yoghurt ★★★★★ ()
Ответ на: комментарий от yoghurt

8, 1, 1

Вообще это не логично, как по мне, ибо указатель на char и char — два разных типа, а значит звездочка здесь должна относиться к типу, а не к переменной.

Freyr69 ★★★ ()
Ответ на: комментарий от Freyr69

Да, это одна из нелогичностей языка, с которой, в принципе, вполне можно жить. Впрочем, это оффтопик)

asaw ★★★★★ ()
Ответ на: комментарий от Begemoth

Почему? C++ слишком адский комбайн, мало что будет понятно. Указатели все равно осиливать надо.

Кроме c-style кастов я, не особо могу придумать, что в C++ из Си не используется.

Kuzy ★★★ ()
Ответ на: комментарий от yoghurt

char* a, b, c;

* относится именно к типу, а не к переменной. Поэтому писать его лучше возле типа. Полностью согласен с backburner, что писать более одной переменной в строке не стоит.

UVV ★★★★★ ()
Ответ на: комментарий от anonymous

Ты сам то стандарт на плюсы осилил? Сколько лет до этого на плюсах писал?

g0t0 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.