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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
#1

Необъявленые переменные в C++- неужели такое возможно? - C++

10.06.2011, 23:07. Просмотров 823. Ответов 10
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
template <class T>
class bithree {
 public:
     void pomechenie() {per= 8;};
};
 
int main() {
// bithree<int> s;
}
MSVC-ий компилятор на per= 8 не ругается; (пока не закомментишь template <class T>). Что такое?
(g++ как всегда дисциплинирован в этом смысле)

Добавлено через 57 секунд
Думал, чем чёрт не шутит, может MSVC при создании объекта ругнётся, так нет же.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2011, 23:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Необъявленые переменные в C++- неужели такое возможно? (C++):

Приведение типов, возможно ли такое - C++
Всем доброго времени суток... Не знаю как правильно спросить то что я хочу, но попробую объяснить на примере) u_char *packet; //массив...

Простой Кейлоггер. Такое возможно? - C++
Вчера начала изучать C++. Я хочу написать кейлоггер. Но прочитала на одном форуме, что без dll библиотек это невозможно. Алгоритм...

Возможно ли сделать такое сокращение? - C++
Здравствуйте, скажите пожалуйста возможно ли такое сделать ? Есть четыре цифры, в первой цифре может быть 1 или 2, во второй тоже 1 или...

Динамический bitset, возможно ли такое? - C++
как известно size в bitset&lt;size&gt; должно быть статической, как реализовать класс с полем bitset&lt;size&gt; в конструктор\параметр которого...

Найти такое минимально x, чтобы после выполнения кода переменные были равны заданным значениям - C++
#include &lt;iostream&gt; using namespace std; int main() { int a,b; int gl; for (int x=60;x&lt;100;x++){

Почему возможно задать массив с размером -1 (почему такое вообще компилируется)? - C++
Всем привет. Долгое время не писал на плюсах, решил пройтись по основам, вспомнить. По непонятным для меня причинам этот код...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ValeryLaptev
Эксперт С++
1040 / 819 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
10.06.2011, 23:12 #2
Это пока не переменная.
Шаблон - это еще не класс. Это только "выкройка" класса. Вот при инстанцировании - огребете по полной...
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
10.06.2011, 23:30 #3
Шаблон — это текст, который до инстанцирования не является классом или функцией. Возможно, MSVC, в отличие от gcc, вообще не трогает шаблоны, пока те явно не использованы где-то в программе.
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
10.06.2011, 23:30  [ТС] #4
C++
1
2
3
4
5
6
7
8
9
template <class T>
class bithree {
 public:
     void pomechenie() {per= 8;};
};
 
int main() {
 bithree<int> s;
}
Создаю объект шаблонного класса, где определяется функция и переменная
непонятно какого типа. Не ругается.
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
10.06.2011, 23:31 #5
Ой, опоздал.

Добавлено через 52 секунды
kravam, а вызови функцию "pomechenie()" в мейне.
ValeryLaptev
Эксперт С++
1040 / 819 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
10.06.2011, 23:37 #6
Цитата Сообщение от kravam Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
template <class T>
class bithree {
 public:
     void pomechenie() {per= 8;};
};
 
int main() {
 bithree<int> s;
}
Создаю объект шаблонного класса, где определяется функция и переменная
непонятно какого типа. Не ругается.
Вы не вызываете метод. Значит он - не инстанцирован. Нет его!
А вот здесь - есть:
C++
1
2
bithree<int> s; 
s.pomechenie();
Тут же получаем по сусалам!
C++
1
2
3
4
5
6
7
8
9
10
11
c:\documents and settings\vv\рабочий стол\викино кубло\12345\1\1.cpp(10) : error C2065: 'per' : undeclared identifier
1>        c:\documents and settings\vv\рабочий стол\викино кубло\12345\1\1.cpp(10) : while compiling class template member function 'void bithree<T>::pomechenie(void)'
1>        with
1>        [
1>            T=int
1>        ]
1>        c:\documents and settings\vv\рабочий стол\викино кубло\12345\1\1.cpp(16) : see reference to class template instantiation 'bithree<T>' being compiled
1>        with
1>        [
1>            T=int
1>        ]
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
11.06.2011, 00:04  [ТС] #7
Странно всё это.
C++
1
2
3
4
5
void f () {
 per= 89;
}
 
int main () {}
Тоже вроде ничё не вызывается, а MSVC всё равно ругается. Избирательный подход к функциям!
ValeryLaptev
Эксперт С++
1040 / 819 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
11.06.2011, 00:07 #8
Нет. В последнем примере - не шаблон, а функция вполне конкретная.
Медитируйте над шаблонами.
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
11.06.2011, 00:08 #9
хреново знаю шаблоны, но по-моему они как макросы. то есть не проверяются (по крайней мере в полной степени) до подстановки в них данных
по мере надобности создается компилятором необходимая версия функции (класса) шаблона, и выполняются подстановки (как макросов) переменных
ValeryLaptev
Эксперт С++
1040 / 819 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
11.06.2011, 00:14 #10
OstapBender, макросы-то макросы... Только не простые, а синтаксические...
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
11.06.2011, 17:52  [ТС] #11
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Нет. В последнем примере - не шаблон, а функция вполне конкретная.
Медитируйте над шаблонами.
А чё над ними медитировать?
Синтаксис какой Бог на душу положит. Тем и живём.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2011, 17:52
Привет! Вот еще темы с ответами:

Неужели никто не знает про список? - C++
У меня уже есть сформированный и сортированный список, в котором я ставлю последний элемент в начало, но возникает проблема с тем, что этот...

Неужели Python более производителен чем C++ с getPerspectiveTransform?! - C++
Доброго времени суток. Неужели Python более производителен чем C++ с getPerspectiveTransform?! Я попробовал два похожих исходника. ...

Создать программу обработки массивов структур используя структурные переменные и переменные типа объеденения - C++
Создать массив структур, каждая из которых состоит из следующих елементов: факультет, курс, группа, фамилия студента и екзаменационная...

Переменные,значение функции,вспомогательные переменные. - C++
1)Даны переменные A,B,C.Изменить их значения,переместив их содержимое из A-в B,B-в C,C-в A,и вывести новые значения переменных A,B,C. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.06.2011, 17:52
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru