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)

я за бан

anonymous
()
Ответ на: комментарий от 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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.