Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
3 / 3 / 2
Регистрация: 19.02.2014
Сообщений: 142

Undefined reference при использовании шаблонов

21.09.2017, 21:31. Показов 4053. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возникла проблема при использовании шаблонов: на этапе сборки повляется ошибка "Undefined reference to 'Func(double)', как её можно решить? (код Образный, не работает при такой конфигурации)

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 <vector>
//----------------------------------//
template <class T>
struct dStruct {
    T Val;
};
 
struct dClass {
    public:
        double Val;
};
 
void Func(double Val);
//----------------------------------//
int main() {
    Func(10.0);
    
    return 0;
}
//----------------------------------//
template <class T>
void Func(double Val) {
    dStruct <dClass> Num;
    
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.09.2017, 21:31
Ответы с готовыми решениями:

Использование шаблонов и ошибка Undefined reference to
Здравствуйте! Пытаюсь использовать шаблоны, но получаю ошибку... Вот исходный код: List.h #ifndef LIST_H #define LIST_H ...

Странная ошибка: [Linker error] undefined reference to `__dyn_tls_init_callback' [Linker error] undefined reference to ld returned 1 exit status
Здравствуйте. Вот недавно начал изучать книгу &quot;С++ для чайников&quot; Стефан Р. Девис 4-е издание. И напоролся на кучу ошибок) Но смог все...

Undefined reference при подключении curl
Пытаюсь подключить данную библиотеку к проекту c++ Использую GCC и G++ на ElementaryOS (дистрибутив убунту) Библиотека подключена через...

16
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
21.09.2017, 21:56
Devilox,объясни назначение строки 22. Для чего она тебе понадобилась.

Добавлено через 1 минуту

Не по теме:

без неё всё скомпилируется без ошибок :)

1
3 / 3 / 2
Регистрация: 19.02.2014
Сообщений: 142
21.09.2017, 22:00  [ТС]
TRam_, я указал, что это Образный код, чтобы не надо было копаться. Вот оригинал:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class dBeam {
    public:
        dBeam();
        ~dBeam();
        
        std :: vector <dParticle> Particles;
        
        void Fill(  dParticleType ParticleP,    dBeamShape ShapeP, 
                    double xSizeP,              double ySizeP,      double zSizeP, 
                    int NumP);
        void Fill(  dParticleType ParticleP,    dBeamShape ShapeP,
                    double xSizeP,              double ySizeP,      double zSizeP,
                    double AverEnergyP,         double DispEnP,     dVector3D EnergyDirP,
                    int NumP);
        
        unsigned int GetParticleNumber();
        dVector3D GetBeamSize();
                    
        dVector3D ResultantCoulomb(unsigned int ParticleNumP);
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template <class ParTempl>
struct dParameter {
    std :: vector <double>      DoubleParamVec;
    std :: vector <float>       FloatParamVec;
    std :: vector <int>         IntParamVec;
    std :: vector <bool>        BoolParamVec;
    std :: vector <ParTempl>   ClassParamVec;
 
    double DoubleParam;
    float FloatParam;
    int IntParam;
    bool BoolParam;
    ParTempl ClassParam;
};
C++
1
2
3
4
5
6
int main() {
    Beam.Fill(dElectron, dBeamCylinder, 35.0E-06, 35.0E-06, 1.125E-07, 280);
    BeamEvolutionTest (Beam, 1.23E-12, 10, "../Data.dat");
 
    return 0;
}
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
template <class ParTempl>
void BeamEvolutionTest(dBeam& BeamP, double StepP, int CountP, std :: string FileNameP) {
    std :: vector <dVector3D> NewPosL, NewVelL;
 
    dParameter <dBeam> ParamL;
    ParamL.DoubleParamVec = {0.0, 0.0};
    ParamL.IntParam = 0;
    ParamL.ClassParam = BeamP;
 
    std :: vector <double> InitL {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
    std :: vector <double> TempL;
 
    dVector3D TempVecL;
 
    std :: ofstream StreamL(FileNameP);
 
    for (int j = 0; j < CountP; j++) {
        for (unsigned int i = 0; i < BeamP.GetParticleNumber(); i++) {
            TempVecL = BeamP.Particles[i].GetPosition();
            InitL[1] = TempVecL.x;
            InitL[2] = TempVecL.y;
            InitL[3] = TempVecL.z;
 
            TempVecL = BeamP.Particles[i].GetVelocity();
            InitL[4] = TempVecL.x;
            InitL[5] = TempVecL.y;
            InitL[6] = TempVecL.z;
 
            ParamL.DoubleParamVec[0] = BeamP.Particles[i].GetMass();
            ParamL.DoubleParamVec[1] = BeamP.Particles[i].GetCharge();
            ParamL.IntParam = i;
 
            TempL = dRungeKutta4th_2(RepulsionTest, InitL, ParamL, StepP);
 
            NewPosL.push_back(dVector3D());
            NewVelL.push_back(dVector3D());
 
            NewPosL[i].x    = TempL[1];
            NewPosL[i].y    = TempL[2];
            NewPosL[i].z    = TempL[3];
 
            NewVelL[i].x    = TempL[4];
            NewVelL[i].y    = TempL[5];
            NewVelL[i].z    = TempL[6];
        }
 
        InitL[0] = TempL[0];
 
        for (unsigned int i = 0; i < BeamP.GetParticleNumber(); i++) {
            BeamP.Particles[i].SetPosition(NewPosL[i].x, NewPosL[i].y, NewPosL[i].z);
            BeamP.Particles[i].SetVelocity(NewVelL[i].x, NewVelL[i].y, NewVelL[i].z);
        }
 
        StreamL << InitL[0] << "\t" << BeamP.GetBeamSize().z / 162333333.3 << std :: endl;
        std :: cout << double(j + 1) / double(CountP) * 100 << "%" << std :: endl;
    }
 
    StreamL.close();
}
//----------------------------------//
template <class ParTempl>
dVector3D RepulsionTest(double ArgP,
                        dVector3D InitP,
                        dVector3D Init_1P,
                        dParameter <ParTempl> ParamP) {
    dVector3D TempL;
    dParticle TempParticleL(ParamP.DoubleParamVec[1],       ParamP.DoubleParamVec[0],       0.0,
                            InitP.x,                        InitP.y,                        InitP.z,
                            Init_1P.x,                      Init_1P.y,                      Init_1P.z);
 
    for (unsigned int i = 0; i < ParamP.ClassParam -> GetParticleNumber(); i++) {
        if (i != ParamP.IntParamVec[0]) {
            TempL += dParticleRepulsionForce(TempParticleL, ParamP.ClassParam.Particles[i]) / TempParticleL.GetMass();
        }
    }
 
    return TempL;
}
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
21.09.2017, 22:19
Devilox, не вижу в данном коде прототипа шаблонной функции BeamEvolutionTest . В коде в посте 1 прототип был для нешаблонной функции, а описание для шаблонной. Нужно было делать либо функцию нешаблонной, либо делать прототип шаблона функции.

Но опять же, шаблоны должны быть полностью включены в ту же единицу трансляции что и их прототипы, если попытаться отделить реализацию шаблонов в файлы реализации (при объявлении прототипов в заголовочном), ничего не заработает.
1
3 / 3 / 2
Регистрация: 19.02.2014
Сообщений: 142
21.09.2017, 22:24  [ТС]
TRam_, прототипы есть, я их просто сюда не вставил:

C++
1
2
3
4
5
6
7
8
template <class ParTempl>
dVector3D RepulsionTest(double ArgP,
                        dVector3D InitP,
                        dVector3D Init_1P,
                        dParameter <ParTempl> ParamP);
 
template <class ParTempl>
void BeamEvolutionTest(dBeam& BeamP, double StepP, int CountP, std :: string FileNameP);
Если "BeamEvolutionTest" в прототипе сделать шаблонной, то появляются ошибки, без шаблона прототипа - только "Undefined reference":

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/home/devilox/DeviloxDocuments/CLionProjects/ElectronRepulsion/main.cpp: В функции «int main()»:
/home/devilox/DeviloxDocuments/CLionProjects/ElectronRepulsion/main.cpp:89:57: ошибка: нет соответствующей функции для вызова «BeamEvolutionTest(dBeam&, double, int, const char [12])»
     BeamEvolutionTest (Beam, 1.23E-12, 10, "../Data.dat");
                                                         ^
/home/devilox/DeviloxDocuments/CLionProjects/ElectronRepulsion/main.cpp:62:6: замечание: candidate: template<class ParTempl> void BeamEvolutionTest(dBeam&, double, int, std::__cxx11::string)
 void BeamEvolutionTest(dBeam& BeamP, double StepP, int CountP, std :: string FileNameP);
      ^~~~~~~~~~~~~~~~~
/home/devilox/DeviloxDocuments/CLionProjects/ElectronRepulsion/main.cpp:62:6: замечание:   вывод/подстановка аргумента шаблона неудачна:
/home/devilox/DeviloxDocuments/CLionProjects/ElectronRepulsion/main.cpp:89:57: замечание:   невозможно вывести параметр шаблона «ParTempl»
     BeamEvolutionTest (Beam, 1.23E-12, 10, "../Data.dat");
                                                         ^
CMakeFiles/ElectronRepulsion.dir/build.make:62: ошибка выполнения рецепта для цели «CMakeFiles/ElectronRepulsion.dir/main.cpp.o»
gmake[3]: *** [CMakeFiles/ElectronRepulsion.dir/main.cpp.o] Ошибка 1
CMakeFiles/Makefile2:67: ошибка выполнения рецепта для цели «CMakeFiles/ElectronRepulsion.dir/all»
gmake[2]: *** [CMakeFiles/ElectronRepulsion.dir/all] Ошибка 2
CMakeFiles/Makefile2:79: ошибка выполнения рецепта для цели «CMakeFiles/ElectronRepulsion.dir/rule»
gmake[1]: *** [CMakeFiles/ElectronRepulsion.dir/rule] Ошибка 2
Makefile:118: ошибка выполнения рецепта для цели «ElectronRepulsion»
gmake: *** [ElectronRepulsion] Ошибка 2
Или, мб, я чего-то недогоняю?..
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
21.09.2017, 22:26
C++
1
2
template <class ParTempl>
void BeamEvolutionTest(dBeam& BeamP, double StepP, int CountP, std :: string FileNameP)
проблема та же самая. Зачем делать тут шаблон функции, если ParTempl в ней нигде не используется?
1
3 / 3 / 2
Регистрация: 19.02.2014
Сообщений: 142
21.09.2017, 22:28  [ТС]
TRam_, это прототип, в теле функции используется.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
21.09.2017, 22:33
Цитата Сообщение от Devilox Посмотреть сообщение
без шаблона прототипа - только "Undefined reference"
ну так строковый литерал нужно превратить в std::string . Компилятор же об этом вполне доходчиво написал. С помощью вот этого - http://www.cplusplus.com/refer... ng/string/

Добавлено через 4 минуты
Цитата Сообщение от Devilox Посмотреть сообщение
TRam_, это прототип, в теле функции используется.
Вот ваш код
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
void BeamEvolutionTest(dBeam& BeamP, double StepP, int CountP, std :: string FileNameP) {
    std :: vector <dVector3D> NewPosL, NewVelL;
 
    dParameter <dBeam> ParamL;
    ParamL.DoubleParamVec = {0.0, 0.0};
    ParamL.IntParam = 0;
    ParamL.ClassParam = BeamP;
 
    std :: vector <double> InitL {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
    std :: vector <double> TempL;
 
    dVector3D TempVecL;
 
    std :: ofstream StreamL(FileNameP);
 
    for (int j = 0; j < CountP; j++) {
        for (unsigned int i = 0; i < BeamP.GetParticleNumber(); i++) {
            TempVecL = BeamP.Particles[i].GetPosition();
            InitL[1] = TempVecL.x;
            InitL[2] = TempVecL.y;
            InitL[3] = TempVecL.z;
 
            TempVecL = BeamP.Particles[i].GetVelocity();
            InitL[4] = TempVecL.x;
            InitL[5] = TempVecL.y;
            InitL[6] = TempVecL.z;
 
            ParamL.DoubleParamVec[0] = BeamP.Particles[i].GetMass();
            ParamL.DoubleParamVec[1] = BeamP.Particles[i].GetCharge();
            ParamL.IntParam = i;
 
            TempL = dRungeKutta4th_2(RepulsionTest, InitL, ParamL, StepP);
 
            NewPosL.push_back(dVector3D());
            NewVelL.push_back(dVector3D());
 
            NewPosL[i].x    = TempL[1];
            NewPosL[i].y    = TempL[2];
            NewPosL[i].z    = TempL[3];
 
            NewVelL[i].x    = TempL[4];
            NewVelL[i].y    = TempL[5];
            NewVelL[i].z    = TempL[6];
        }
 
        InitL[0] = TempL[0];
 
        for (unsigned int i = 0; i < BeamP.GetParticleNumber(); i++) {
            BeamP.Particles[i].SetPosition(NewPosL[i].x, NewPosL[i].y, NewPosL[i].z);
            BeamP.Particles[i].SetVelocity(NewVelL[i].x, NewVelL[i].y, NewVelL[i].z);
        }
 
        StreamL << InitL[0] << "\t" << BeamP.GetBeamSize().z / 162333333.3 << std :: endl;
        std :: cout << double(j + 1) / double(CountP) * 100 << "%" << std :: endl;
    }
 
    StreamL.close();
}
и поиском мне не удалось найти в нём ни одного упоминания ParTempl. Или речь о том что оно появится в будущем?
1
3 / 3 / 2
Регистрация: 19.02.2014
Сообщений: 142
21.09.2017, 22:35  [ТС]
C++
1
dParameter <dBeam> ParamL;
в этой строке вместо dBeam стояло ParTempl, но ошибка была та же. (я просто подумал, что надо бы указать, какой тип используется в функции).
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
21.09.2017, 22:42
Лучший ответ Сообщение было отмечено Devilox как решение

Решение

Цитата Сообщение от Devilox Посмотреть сообщение
но ошибка была та же
Способ решения - на первом этапе добиться того, чтоб у компилятора небыло противоречия между BeamEvolutionTest(dBeam&, double, int, const char [12]) и template<class ParTempl> void BeamEvolutionTest(dBeam&, double, int, std::__cxx11::string)

Например переписав вызов вот так:
C++
1
 BeamEvolutionTest<dBeam> (Beam, 1.23E-12, 10, std::string("../Data.dat"));
1
3 / 3 / 2
Регистрация: 19.02.2014
Сообщений: 142
21.09.2017, 22:46  [ТС]
Всё вернулось к исходной ошибке:
Bash
1
2
3
4
5
6
7
8
9
10
11
CMakeFiles/ElectronRepulsion.dir/main.cpp.o: In function `void BeamEvolutionTest<dBeam>(dBeam&, double, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
/home/devilox/DeviloxDocuments/CLionProjects/ElectronRepulsion/main.cpp:231: undefined reference to `std::vector<double, std::allocator<double> > dRungeKutta4th_2<dBeam>(dVector3D (*)(double, dVector3D, dVector3D, dParameter<dBeam>), std::vector<double, std::allocator<double> >, dParameter<dBeam>, double)'
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
CMakeFiles/ElectronRepulsion.dir/build.make:198: ошибка выполнения рецепта для цели «ElectronRepulsion»
gmake[3]: *** [ElectronRepulsion] Ошибка 1
CMakeFiles/Makefile2:67: ошибка выполнения рецепта для цели «CMakeFiles/ElectronRepulsion.dir/all»
gmake[2]: *** [CMakeFiles/ElectronRepulsion.dir/all] Ошибка 2
CMakeFiles/Makefile2:79: ошибка выполнения рецепта для цели «CMakeFiles/ElectronRepulsion.dir/rule»
gmake[1]: *** [CMakeFiles/ElectronRepulsion.dir/rule] Ошибка 2
Makefile:118: ошибка выполнения рецепта для цели «ElectronRepulsion»
gmake: *** [ElectronRepulsion] Ошибка 2
Добавлено через 25 секунд
А, стоп.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
21.09.2017, 22:49
Да, теперь уже на рунге-кутта ругается.
1
3 / 3 / 2
Регистрация: 19.02.2014
Сообщений: 142
21.09.2017, 22:52  [ТС]
Так, окей, Рунге-Кутта у меня тоже шаблонная функция (прототип в отдельном хедере). Но здесь вроде должно быть правильно, я попытался вызвать dRungeKutta4th_2 <dBeam>, но компилятор ругается.

C++
1
2
3
4
5
template <class ParTempl>
std :: vector <double> dRungeKutta4th_2(dVector3D (*Func)(double, dVector3D, dVector3D, dParameter <ParTempl>),
                                        std :: vector <double> InitP,
                                        dParameter <ParTempl>,
                                        double StepP);
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
template <class ParTempl>
std :: vector <double> dRungeKutta4th_2(dVector3D (*Func)(double, dVector3D, dVector3D, dParameter <ParTempl>),
                                        std :: vector <double> InitP,
                                        dParameter <ParTempl> ParamP,
                                        double StepP) {
    double ArgL = InitP[0];
    dVector3D InitL(InitP[1], InitP[2], InitP[3]);
    dVector3D Init_1L(InitP[4], InitP[5], InitP[6]);
 
    dVector3D k1L;
    dVector3D k2L;
    dVector3D k3L;
    dVector3D k4L;
 
    dVector3D l1L;
    dVector3D l2L;
    dVector3D l3L;
    dVector3D l4L;
 
    dVector3D ResL;
    dVector3D Res_1L;
 
    std :: vector <double> OutputL;
 
    k1L = Init_1L;
    l1L = Func(ArgL, InitL, Init_1L, ParamP);
 
    k2L = Init_1L + l1L * (StepP / 2);
    l2L = Func(ArgL + StepP / 2, InitL + k1L * (StepP / 2), Init_1L + l1L * (StepP / 2), ParamP);
 
    k3L = Init_1L + l2L * (StepP / 2);
    l3L = Func(ArgL + StepP / 2, InitL + k2L * (StepP / 2), Init_1L + l2L * (StepP / 2), ParamP);
 
    k4L = Init_1L + l3L * StepP;
    l4L = Func(ArgL + StepP, InitL + k3L * StepP, Init_1L + l3L * StepP, ParamP);
 
    ResL = InitL + (k1L + k2L * 2 + k3L * 2 + k4L) * (StepP / 6);
    Res_1L = Init_1L + (l1L + l2L * 2 + l3L * 2 + l4L) * (StepP / 6);
 
    OutputL.push_back(ArgL + StepP);
 
    OutputL.push_back(ResL.x);
    OutputL.push_back(ResL.y);
    OutputL.push_back(ResL.z);
 
    OutputL.push_back(Res_1L.x);
    OutputL.push_back(Res_1L.y);
    OutputL.push_back(Res_1L.z);
 
    return OutputL;
}
0
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
21.09.2017, 23:06
не выносите реализацию шаблонных функций в спп файлы до тех пор, пока не узнаете в каких случаях и зачем это делается. до тех пор всегда в h файле.
2
3 / 3 / 2
Регистрация: 19.02.2014
Сообщений: 142
21.09.2017, 23:14  [ТС]
Понял, сделал, теперь всё сложнее. Компиляция и сборка прошли, но появилась ошибка.
Bash
1
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
Добавлено через 3 минуты
Дебаггер указывает на строку 12:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template <class ParTempl>
dVector3D RepulsionTest(double ArgP,
                        dVector3D InitP,
                        dVector3D Init_1P,
                        dParameter <ParTempl> ParamP) {
    dVector3D TempL;
    dParticle TempParticleL(ParamP.DoubleParamVec[1],       ParamP.DoubleParamVec[0],       0.0,
                            InitP.x,                        InitP.y,                        InitP.z,
                            Init_1P.x,                      Init_1P.y,                      Init_1P.z);
 
    for (unsigned int i = 0; i < ParamP.ClassParam.GetParticleNumber(); i++) {
        if (i != ParamP.IntParamVec[0]) {
            TempL += dParticleRepulsionForce(TempParticleL, ParamP.ClassParam.Particles[i]) / TempParticleL.GetMass();
        }
    }
 
    return TempL;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template <class ParTempl>
struct dParameter {
    std :: vector <double>      DoubleParamVec;
    std :: vector <float>       FloatParamVec;
    std :: vector <int>         IntParamVec;
    std :: vector <bool>        BoolParamVec;
    std :: vector <ParTempl>   ClassParamVec;
 
    double DoubleParam;
    float FloatParam;
    int IntParam;
    bool BoolParam;
    ParTempl ClassParam;
};
0
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
21.09.2017, 23:16
ну компиляция прошла. бинарь сгенерился, но падает. это уже логические ошибки в вашем коде. никто вам ничего не скажет, пока вы не выложите полностью сорцы и данные, при которых это случается. ну или сами дальше дебажте.
1
3 / 3 / 2
Регистрация: 19.02.2014
Сообщений: 142
21.09.2017, 23:18  [ТС]
Да, точно, спасибо, я нашёл ошибку, рано начал тревогу бить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.09.2017, 23:18
Помогаю со студенческими работами здесь

Undefined reference при создании объекта
Есть класс Engine и функция для его инициализации - CreateEngine при попытке создать объект с помощью Engine *engine =...

Ошибка при запуске программы (undefined reference to...)
Здравствуйте, пишу лабу по С++ и столкнулся с ошибкой при запуске данного кода, ошибка 248|undefined reference to `Podrazdelenie::scan()' ...

Ошибка: undefined reference to при наследовании класса
Здравствуйте форумчане. Пытаюсь наследовать класс MyService от OAuthService и получаю множество ошибок: Ошибка: undefined reference to...

При компиляции Dev-C ошибки: undefined reference to
Привествую. Подозреваю что что то не до объявил. Код: #include &lt;iostream&gt; using namespace std; int main() { ...

Undefined reference при работе с шаблонным класом
Доброго времени суток! Собственно, проблема такая: Работаю в Code::Blocks, создаю экземпляр класса шаблонного (любого), и билдер всё...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru