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

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

Войти
Регистрация
Восстановить пароль
 
dgroup
0 / 0 / 0
Регистрация: 01.12.2010
Сообщений: 16
#1

Проблемма с компиляцией в Visual C++ 2010 - C++

15.11.2011, 21:50. Просмотров 800. Ответов 10
Метки нет (Все метки)

Проект(empty) создан в консольном режиме, код ниже:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <iostream>
#include <math.h>
#include <fstream>
 
//---------------- Посоветували подключить ----
//---------------- библиотеки ----------------- 
//#pragma comment (lib, "bufferoverflowU.lib") 
//#pragma comment (lib, "bufferoverflowK.lib")
//#pragma comment (lib, "bufferoverflow.lib")
 
//---------------------------------------------
 
using namespace std;
 
class AllFunction {
    public:
        double m_mainQ;
 
        AllFunction(){
            m_mainQ = 0;
        }
    
        virtual void input()=0;
        virtual void output()=0;
        virtual void calculate()=0;  
 
        bool operator ==(const AllFunction& temp) const{
            return m_mainQ == temp.m_mainQ;
        }
        bool operator !=(const AllFunction& temp) const{
            return  m_mainQ != temp.m_mainQ;
        }
        bool operator <(const AllFunction& temp) const{
            return m_mainQ < temp.m_mainQ;
        }
        bool operator <=(const AllFunction& temp) const{
            return m_mainQ <= temp.m_mainQ;
        }
        bool operator >(const AllFunction& temp) const{
            return m_mainQ > temp.m_mainQ;
        }
        bool operator >=(const AllFunction& temp) const{
            return m_mainQ >= temp.m_mainQ;
        }
 
};
 
class Shell: public AllFunction {
    public:
        double  m_deltaS,   m_Fotv,     
                m_Miu,      m_H0,
                m_h,        m_R,
                m_Omega1;
    
     
        static double m_G;// = 9.81;
        
        Shell(){
            m_G = 9.81;
        } 
        Shell(double deltaS,double Fotv, double Miu, double H0, double h , double R, double Omega ){
                m_deltaS    =deltaS;
                m_Fotv      = Fotv;     
                m_Miu       = Miu;
                m_H0        = H0;
                m_h         = h;
                m_R         = R;
                m_Omega1    = Omega;
                m_G = 9.81;
        }
        
        void input(){
            ifstream temp ("input.txt",ifstream::in);
            if (!temp) {
                cout<<"Файл не открылся: input.txt"<<endl;
            }
            temp >> m_deltaS >>  m_Fotv >> m_Miu >> m_H0 >> m_h>>
               m_R >> m_Omega1;
            
            temp.close();
 
        }
        void output(){
            ofstream temp("output.txt", ifstream::out);
            temp << m_mainQ << endl;
            temp.close();
        }
        void calculate(){
            
             m_mainQ = ((2*3.14*m_Miu*m_R*m_Fotv) 
                        / (3*m_G*m_deltaS)) 
                        * ( (sqrt(pow( 2*m_G*m_H0+pow(m_Omega1,2)*pow(m_R,2)+2*m_G*m_h,3 ))) 
                        + sqrt(pow(2*m_G*m_H0 + pow(m_Omega1,2)*pow(m_R,2),3)) )  ;
             
        }
 
    };
    
 
void main(){
    AllFunction *a=new Shell() ;
    a->input();
    a->calculate();
    a->output();
}
=====================
=== Ошибки такие: =====!
====================!!
1) error LNK2001: unresolved external symbol "public: static double Shell::m_G" (? m_G@Shell@@2NA)
2) error KNK1120: 1 unresolved externals
==========
По условии на до Static double m_G, сделать константой, но когда делаю
C++
1
const double m_G = 9.81;
Визуал подчеркивает "= "и пишет error: a member of type cannot have ann-in class initializer
Исправте меня криворукого.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2011, 21:50     Проблемма с компиляцией в Visual C++ 2010
Посмотрите здесь:

Visual Studio 2010 и 2012. Проблемма после установки 12 - C++
Наверное уже кто-то сталкивался с этим и уже написал топик сюда или куда-либо-нибудь, но вот гугл и я убеждаемся в обратном (если я не прав...

Visual C++ 2010 - C++
В чём разница между Visual C++ 2010 и Visual Studio 2010? Посмотрел в Гугле, нигде толком не написано (или ищу плохо). Вообще, складывается...

microsoft visual c++ 2010 - C++
почему в microsoft visual c++ 2010, код c++ так отличается от кода например в codeblocks или dev c++, почему так, и можно ли как-нибудь...

Самоучитель visual c++ 2010 - C++
Не могли бы вы ли посоветовать хороший самоучитель по visual c++ с нуля.

научите Visual C++2010 - C++
Cнова открыл я VC10, новый проект-классик библиотеку, ввел программу которую просят меня ввести в учебнике: int main () { string...

Microsoft Visual C++ 2010 - C++
Дано пятизначное натуральное число.Если последняя его цифра больше за первую,то переставить их местами. Нужен текст программы для...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
15.11.2011, 21:55     Проблемма с компиляцией в Visual C++ 2010 #2
Вы только статические константы можете инициализировать внутри класса.

Вместо

C++
1
const double m_G = 9.81;
надо написать
C++
1
static const double m_G = 9.81;
dgroup
0 / 0 / 0
Регистрация: 01.12.2010
Сообщений: 16
15.11.2011, 22:05  [ТС]     Проблемма с компиляцией в Visual C++ 2010 #3
не катит, тоже самое
Сыроежка
Заблокирован
16.11.2011, 18:34     Проблемма с компиляцией в Visual C++ 2010 #4
Цитата Сообщение от dgroup Посмотреть сообщение
не катит, тоже самое
Что "тоже самое"?! Не фантазируйте! Либо у вас очень старый компилятор, который не поддерживает стандарт С++!
dgroup
0 / 0 / 0
Регистрация: 01.12.2010
Сообщений: 16
16.11.2011, 18:36  [ТС]     Проблемма с компиляцией в Visual C++ 2010 #5
ребят. чесно писал
C++
1
static const double m_G = 9.81;
нифига
Сыроежка
Заблокирован
16.11.2011, 18:39     Проблемма с компиляцией в Visual C++ 2010 #6
Цитата Сообщение от dgroup Посмотреть сообщение
ребят. чесно писал
C++
1
static const double m_G = 9.81;
нифига
Проблема не в том, что "не катит", а проблема в том, что вы не понимаете, что вы делаете! Если вы объявили константу, то вы не можете менять ее значение в конструкторе!

C++
1
2
3
                Shell(){
                        m_G = 9.81;
                }
Вы хоть думайте, что вы делаете. И кроме того, если возникает ошибка, то надо сообщать, какая ошибка и в каком предложении, чтобы другие не гадали!
Рулик
8 / 8 / 0
Регистрация: 14.11.2011
Сообщений: 54
16.11.2011, 18:41     Проблемма с компиляцией в Visual C++ 2010 #7
Задай константой через дефайн
C++
1
#define m_G 9.81
Сыроежка
Заблокирован
16.11.2011, 18:44     Проблемма с компиляцией в Visual C++ 2010 #8
Цитата Сообщение от Рулик Посмотреть сообщение
Задай константой через дефайн
C++
1
#define m_G 9.81
И ни в коем случае не делайте так, как вам тут посоветовали! Объявите статическую константу внутри класса.
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
16.11.2011, 19:10     Проблемма с компиляцией в Visual C++ 2010 #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
class A {
public:
    static const double g;
};
 
const double A::g = 9.8;
 
class B {
public:
    const double g;
    B() : g(9.8){}
};
На выбор, так сказать.

Добавлено через 4 минуты
Сыроежка, только целочисленные статические константы можно инициализировать внутри класса.
Сыроежка
Заблокирован
16.11.2011, 19:12     Проблемма с компиляцией в Visual C++ 2010 #10
Цитата Сообщение от PraZuBeR Посмотреть сообщение

Добавлено через 4 минуты
Сыроежка, только целочисленные статические константы можно инициализировать внутри класса.
Да, вполне возможно. По памяти не помню, надо смотреть стандарт.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2011, 23:13     Проблемма с компиляцией в Visual C++ 2010
Еще ссылки по теме:

Visual c++ 2010 и dev c++ - C++
У меня есть исходник программы, которую я писал в dev c++ и там было все нормально.Сейчас взял этот же исходник и решил скомпилировать с...

OpenGL и Visual C++ 2010 - C++
Доброго времени суток уважаемые русскоговорящие жители планеты. Подскажите как быть если кто знает. Жил я себе не тужил да вот решил я...

Не компилируется в visual 2010 - C++
Простой код : #include &lt;iostream&gt; int main () { std :: cout &lt;&lt; &quot; privet &quot; &lt;&lt; std ::endl; return 0; } Код слизал с учебника. ...

Не компилируется в visual 2010 - C++
Простой код : #include &lt;iostream&gt; int main () { std :: cout &lt;&lt; &quot; privet &quot; &lt;&lt; std ::endl; return 0; } Код слизал с учебника. ...


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

Или воспользуйтесь поиском по форуму:
dgroup
0 / 0 / 0
Регистрация: 01.12.2010
Сообщений: 16
16.11.2011, 23:13  [ТС]     Проблемма с компиляцией в Visual C++ 2010 #11
спасибо за ответы, ошибку понял. исправлюсь
Yandex
Объявления
16.11.2011, 23:13     Проблемма с компиляцией в Visual C++ 2010
Ответ Создать тему
Опции темы

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