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

Работа с const - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Новый стандарт принят! http://www.cyberforum.ru/cpp/thread341611.html
Barry Hedquist wrote: Just received word from ANSI that the C++ FDIS has officially been approved by ISO in a unanimous vote. 21 of 21 National Bodies voted to APPROVE. Под FDIS подразумевается N3290 (отличия которого от N3291 незначительны — см. comp.std.c++ — difference between documents n3290 and n3291->...
C++ mpl проход по элементам Пытался написать вывод элементов vector_c не через for_each. Не вышло. Кто подскажет как сие сделать наиболее удобно? Пример вектора. typedef boost::mpl::vector_c<char, 'h', 'e', 'l', 'l', 'o'>::type vector; Спасибо. http://www.cyberforum.ru/cpp/thread327906.html
C++ Compile-time алгоритмы. сборник
всем привет. предлагаю в этой теме обсуждать/реализовывать/выкладывать compile-time алгоритмы. под CUT'ом. подсчет FNV1a-хеш суммы строк: #include <iostream> template<size_t N, size_t I=0>
C++ Практические задания из собеседований
Предлагаю в данной теме выкладывать интересные и не очень практические задачи, которые попадаются на собеседованиях. Я начну: 1. Написать функцию, определяющую является ли заданное число степенью двойки. 2. Написать функцию, определяющую содержит ли односвязный список циклы (например, последний ссылается на второй). Просьба решения выкладывать под CUT'ом.
C++ realloc и вызов конструктора http://www.cyberforum.ru/cpp/thread300431.html
здраствуйте! мне препод сказал, что можно выделить память оператором new, а потом довыделить её с помощью realloc и каким-то образом вызвать конструкторы для новой памяти(ну или это я так его понял:D). Как это можно сделать? задание вобще такое: Во всех вариантах необходимо первоначально создать шаблон класса для работы с массивом произвольного типа данных. Шаблон должен включать: указатель,...
C++ Баг asio? или баг TCP стека? всем привет. повстречался с очень странным багом. и не могу определить кто бажит, asio, или TCP-стек. на стороне клиента, сохраняю отправляемые массивы в файл, чтоб убедится в том, что массивы не портятся. так и есть. массивы не искаженны: на стороне сервера, так же, сохраняю принятые массивы. но тут, массив приходит искаженным: подробнее

Показать сообщение отдельно
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
11.09.2011, 12:18     Работа с const
Цитата Сообщение от Evg Посмотреть сообщение
Следующие два кода без проблем пройдут компиляцию.
Ну я и не говорил, что модификатор const - панацея от всех несчастий. Вот такой код не будет компилироваться
C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
int main (void)
{
  const char str[] = "abcde";
  *str = 'A';
  printf("%s\n", str);
  return 0;
}

adamo86, если попытаться скомпилировать вот это
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
 
class Name{
    std::string _name;
public:
    Name(const std::string & name) : _name(name) {}
    std::string get() { return _name; }
};
 
void func(const Name & n){
    std::cout << n.get() << std::endl;
}
 
int main(){
    std::vector<Name> vec;
    vec.push_back(Name("Vasya"));
    vec.push_back(Name("Kolya"));
    vec.push_back(Name("Petya"));
    
    for_each(vec.begin(), vec.end(), func);
    
    return 0;
}
получите
Код
$ g++ -o for_each for_each.cpp 
for_each.cpp: In function ‘void func(const Name&)’:
for_each.cpp:14: error: passing ‘const Name’ as ‘this’ argument of ‘std::string Name::get()’ discards qualifiers
ну или вроде того. Объявите метод get() константным
C++
1
std::string get() const { return _name; }
и всё получится.
Код
$ ./for_each 
Vasya
Kolya
Petya
 
Текущее время: 04:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru