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

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

Войти
Регистрация
Восстановить пароль
 
 
Hunter13ua
46 / 46 / 5
Регистрация: 25.10.2011
Сообщений: 183
#1

Expected constructor, destructor, or type conversion before '.' token - C++

29.10.2013, 15:02. Просмотров 1216. Ответов 26
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
struct Gf3 {
    GLfloat x;
    GLfloat y;
    GLfloat z;
} p1,p2,p3,t;
 
t.x = 0.0; t.y = 0.0; t.z = 1.0;
p1.x = 0.0; p1.y = 0.942809; p1.z = -0.333333;
p2.x = -0.816497; p2.y = -0.471405; p2.z = -0.333333;
p3.x = 0.816497; p3.y = -0.471405; p3.z = -0.333333;
Ошибки на строчках с присваиванием.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2013, 15:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Expected constructor, destructor, or type conversion before '.' token (C++):

Ошибка expected constructor, destructor, or type conversion before ';' token - C++
выдает ошибку expected constructor, destructor, or type conversion before ';' token с 61-90 строчку.че делать уже не знаю.проверяла код ...

Ошибка expected constructor, destructor, or type conversion before '(' toke - C++
Возникает ошибка expected constructor, destructor, or type conversion before '(' toke в 7 и 16 строчке. #include <iostream> #include...

Ошибка "expected constructor, destructor, or type conversion" - C++
//ourfunc.cpp - îïðåäåëÿåò âàøó ñîáñòâåííóþ ôóíêöèþ #include <iostream> using namespace std; void simon(int); //ïðîòîòèï ôóíêöèè ...

Ошибка: forbids declaration of 'magic' with no type expected ';' before '.' token - C++
пишет "forbids declaration of 'magic' with no type expected ';' before '.' token" не могу найти где ? #include <iostream> #include...

Conversion by constructor , нужны пояснения - C++
Здравствуйте. Смотрю я, что пишут об этом Conversion by constructor, вижу одно: Вот, думаю, сейчас как заставлю компилятор...

Expected unqualified-id before '{' token - C++
#include <iostream> using namespace std; enum {researsher,laborer,secratary,manager,accountant,executive}; int main() { char...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
29.10.2013, 16:07 #16
Цитата Сообщение от Hunter13ua Посмотреть сообщение
Как бы понятно, что в "любой" функции т.к. "любая" функция будет вызвана именно внутри main, что равноценно описанию прямо в main.

Не по теме:

WTF am I reading?

0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
29.10.2013, 16:17 #17
Цитата Сообщение от metaluga145 Посмотреть сообщение
MrGluck, оно то логично, но в плюсах ведь не обязательно так делать. или я что-то упустил в этой жизни?
Я выше написал
Порядок создания глобальных переменных неопределен
Сначала идет попытка обращения к t.x а только потом его создание.

Добавлено через 9 минут
Цитата Сообщение от Hunter13ua Посмотреть сообщение
Как бы понятно, что в "любой" функции т.к. "любая" функция будет вызвана именно внутри main, что равноценно описанию прямо в main.
Правильнее будет сказать, что обязательно поместить эти инструкции до точки входа в программу (не чисто физически, над main ) а именно сделать так, чтобы их вызов был явно позже создания объектов, с которыми они работают.

Да и вообще, глобальные переменные - зло. Я понимаю, что в графике их используют чаще, но все же их можно и желательно избегать.
2
Hunter13ua
46 / 46 / 5
Регистрация: 25.10.2011
Сообщений: 183
29.10.2013, 16:18  [ТС] #18
Цитата Сообщение от Rivory Посмотреть сообщение

Не по теме:

WTF am I reading?

C++
1
2
3
4
5
int main(){
    int a = 5;
    cout << a;
    return 0;
}
Равноценно
C++
1
2
3
4
5
6
7
8
9
void f(void){
    int a = 5;
    cout << a;
}
 
int main(){
    f();
    return 0;
}
Нет? Может, я выразил мысль криво. Тогда уж извините.
0
MrGluck
29.10.2013, 16:18
  #19

Не по теме:

Цитата Сообщение от Rivory Посмотреть сообщение
WTF am I reading?
правильно WTF I am reading?

0
Hunter13ua
46 / 46 / 5
Регистрация: 25.10.2011
Сообщений: 183
29.10.2013, 16:19  [ТС] #20
MrGluck, большое спасибо! Вот теперь понятно
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
29.10.2013, 16:19 #21
Цитата Сообщение от Hunter13ua Посмотреть сообщение
Равноценно
с точки зрения набора инструкций на АСМ да.
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
29.10.2013, 16:26 #22
MrGluck, почему просто в с++ и в visual c++ разные стандарты?
http://develab.narod.ru/cpp/96.htm
тут написано,что в visual не важно где что писать
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
29.10.2013, 16:57 #23
Цитата Сообщение от metaluga145 Посмотреть сообщение
MrGluck, почему просто в с++ и в visual c++ разные стандарты?
ничего подобного там нет.
Переменные, которые объявлены вне всех блоков и классов (о классах речь пойдет позже), называются глобальными, и они имеют глобальную область видимости (которая также называется областью видимости глобального пространства имен или областью видимости файла). Это значит, что они доступны всем функциям в файле, начиная с точки, где они были объявлены. Если вы объявляете их в самом начале ваше программы, то они будут доступны в любом месте файла.

Глобальные переменные также по умолчанию имеют статическое время жизни. Глобальные переменные со статическим временем жизни существуют с момента начала выполнения программы и до момента ее завершения. Если вы не специфицируете начальное значение глобальной переменной, то по умолчанию она инициализируется нулем. Инициализация глобальных переменных происходит перед началом выполнения функции main(), поэтому они всегда доступны в любой части кода, находящейся внутри области видимости переменной.
Где здесь противоречащие факторы? Да, они будут доступны, но это всего лишь значит, что компилятор уже будет знать, чем является t, например. Иначе он просто сказал бы, что t не объявлено. Про точный порядок инициализации и выполнения инструкций до main ничего не сказано.

На самом деле, меня не туда понесло.
Писать инструкции вне блоков функции нельзя в принципе. Сейчас скину ссыль со стандарта. Но про порядок инициализации все остается в силе, хоть и не по теме.
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
29.10.2013, 17:08 #24
MrGluck, просто я в своем проекте писал за пределами функций HWND hWnd = NULL; и не получал никаких предупреждений)
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
29.10.2013, 17:33 #25
Точка начала выполнения инструкций в программе - main.
3.6.1.1 A program shall contain a global function called main, which is the designated start of the program.
то, про что я хотел сказать, но не в тему и не тот случай.
3.6.2.3 3 An implementation is permitted to perform the initialization of a non-local variable with static storage
duration as a static initialization even if such initialization is not required to be done statically, provided
that
— the dynamic version of the initialization does not change the value of any other object of namespace
scope prior to its initialization, and
— the static version of the initialization produces the same value in the initialized variable as would be
produced by the dynamic initialization if all variables not required to be initialized statically were
initialized dynamically.
— [ Note: As a consequence, if the initialization of an object obj1 refers to an object obj2 of namespace
scope potentially requiring dynamic initialization and defined later in the same translation unit, it is
unspecified whether the value of obj2 used will be the value of the fully initialized obj2 (because obj2
was statically initialized) or will be the value of obj2 merely zero-initialized. For example,
C++
1
2
3
4
5
6
inline double fd() { return 1.0; }
extern double d1;
double d2 = d1; // unspecified:
// may be statically initialized to 0.0 or
// dynamically initialized to 1.0
double d1 = fd(); // may be initialized statically to 1.0
—end note ]
насчет обязательства писать инструкции внутри функций в стандарте правила не нашел, но это следует из логики выполнения программы: до main ничего (инструкции) не выполняется.

Добавлено через 1 минуту
Цитата Сообщение от metaluga145 Посмотреть сообщение
HWND hWnd = NULL;
это объявление имеет право на жизнь потому что фактически оператор присвоений трансформируется в конструктор копий.
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
30.10.2013, 08:51 #26
Цитата Сообщение от metaluga145 Посмотреть сообщение
что-что? поясните)
Что вам обьяснить то? Есть функция myInit, в ней нужно написать инициализации членов структуры.
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
30.10.2013, 09:46 #27
programina, Вы не поняли суть вопроса, но это уже не важно!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2013, 09:46
Привет! Вот еще темы с ответами:

Expected unqualified-id before '{' , '(' token - C++
Не пойму что не так... #include &lt;iostream&gt; using namespace std; class University; {private: char rectorate; char faculty ; ...

Expected unqualified-id before '{' token - C++
#include &lt;QCoreApplication&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; float func(float x); { float...

Expected unqualified id before '{' token - C++
Я полный нуб в программировании, только начал что-то пытаться сделать. добрался до циклов. попытался изобразить движение мячика и...

Expected unqualified-id before '<' token - C++
Решил задачу, на компьютере не было ни ошибок, ни предупреждений. а когда сдал на сайт высветилась ошибка expected unqualified-id before...


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

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

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