Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
kravam
быдлокодер
1706 / 893 / 105
Регистрация: 04.06.2008
Сообщений: 5,524
#1

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

10.06.2011, 23:07. Просмотров 851. Ответов 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 при создании объекта ругнётся, так нет же.
http://www.cyberforum.ru/cpp-beginners/thread1638051.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2011, 23:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Необъявленые переменные в C++- неужели такое возможно? (C++):

Возможно ли сделать такое сокращение?
Здравствуйте, скажите пожалуйста возможно ли такое сделать ? Есть четыре...

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

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

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

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

10
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
10.06.2011, 23:12 #2
Это пока не переменная.
Шаблон - это еще не класс. Это только "выкройка" класса. Вот при инстанцировании - огребете по полной...
1
volovzi
268 / 170 / 11
Регистрация: 14.03.2010
Сообщений: 501
10.06.2011, 23:30 #3
Шаблон — это текст, который до инстанцирования не является классом или функцией. Возможно, MSVC, в отличие от gcc, вообще не трогает шаблоны, пока те явно не использованы где-то в программе.
0
kravam
быдлокодер
1706 / 893 / 105
Регистрация: 04.06.2008
Сообщений: 5,524
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;
}
Создаю объект шаблонного класса, где определяется функция и переменная
непонятно какого типа. Не ругается.
0
volovzi
268 / 170 / 11
Регистрация: 14.03.2010
Сообщений: 501
10.06.2011, 23:31 #5
Ой, опоздал.

Добавлено через 52 секунды
kravam, а вызови функцию "pomechenie()" в мейне.
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 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>        ]
0
kravam
быдлокодер
1706 / 893 / 105
Регистрация: 04.06.2008
Сообщений: 5,524
11.06.2011, 00:04  [ТС] #7
Странно всё это.
C++
1
2
3
4
5
void f () {
 per= 89;
}
 
int main () {}
Тоже вроде ничё не вызывается, а MSVC всё равно ругается. Избирательный подход к функциям!
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
11.06.2011, 00:07 #8
Нет. В последнем примере - не шаблон, а функция вполне конкретная.
Медитируйте над шаблонами.
0
OstapBender
584 / 523 / 75
Регистрация: 22.03.2011
Сообщений: 1,585
11.06.2011, 00:08 #9
хреново знаю шаблоны, но по-моему они как макросы. то есть не проверяются (по крайней мере в полной степени) до подстановки в них данных
по мере надобности создается компилятором необходимая версия функции (класса) шаблона, и выполняются подстановки (как макросов) переменных
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
11.06.2011, 00:14 #10
OstapBender, макросы-то макросы... Только не простые, а синтаксические...
0
kravam
быдлокодер
1706 / 893 / 105
Регистрация: 04.06.2008
Сообщений: 5,524
11.06.2011, 17:52  [ТС] #11
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Нет. В последнем примере - не шаблон, а функция вполне конкретная.
Медитируйте над шаблонами.
А чё над ними медитировать?
Синтаксис какой Бог на душу положит. Тем и живём.
0
11.06.2011, 17:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2011, 17:52
Привет! Вот еще темы с решениями:

Неужели никто не знает про список?
У меня уже есть сформированный и сортированный список, в котором я ставлю...

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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