Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
9 / 9 / 4
Регистрация: 10.05.2011
Сообщений: 101
1

Неразрешенные внешние элементы в классе

14.02.2013, 19:39. Показов 1641. Ответов 3
Метки нет (Все метки)

Суть задачи передать в функцию set текст с последующим использованием его в print (где также производятся расчеты). Пробовал создавать объект класса и обращаться к закрытым переменным точкой, но доступа нет. При попытке реализовать с конструктором (прим. ниже) выдает ошибки:
Код
error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall AnyClass::AnyClass(void)" (??0AnyClass@@QAE@XZ) в функции _main
fatal error LNK1120: неразрешенных внешних элементов: 1
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
#include <iostream>
#include <cmath>
#include <cstring>
#include <stdlib.h>
using namespace std;
class AnyClass
{
    // компоненты-данные 
    double x, y, z;
    char *p;
    // компоненты-функции 
public:
    // конструктор
    /**/
    AnyClass();
    AnyClass(double,double,double);
    // функция инициализации 
    void set(char *par)
    {
        strcpy(p, par);
    }
    // функция вывода результатов 
    void print()
    {
        cout << p << (1+pow(sin(x+y),2))/abs(x-2*y/(1+pow(x,2)*pow(y,2)))*pow(x,abs(y))+pow(cos(atan(1/z)),2) << endl;
    }
};
AnyClass::AnyClass(double x1, double y1, double z1)
    {
        *p='\0';
        x = x1;
        y = y1;
        z = z1;
    }
int main()
{
    setlocale(LC_ALL, "");
    AnyClass *p1 = new AnyClass();
    AnyClass ob((3.74*pow(10,-2)),(-0.825),(0.16*pow(10,2)));
    p1->set("w = ");
    p1->print();
    delete p1;
    cin.sync();
    cin.get();
    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
#include <iostream>
#include <cmath>
#include <cstring>
#include <stdlib.h>
using namespace std;
class AnyClass
{
    // компоненты-данные 
    double x, y, z;
    char *p;
    // компоненты-функции 
public:
    // конструктор
    /**/
    //AnyClass();
    // функция инициализации 
    void set(char *par,double x1,double y1,double z1)
    {
        strcpy(p, par);
        x = x1;
        y = y1;
        z = z1;
    }
    // функция вывода результатов 
    void print()
    {
        cout << p << (1+pow(sin(x+y),2))/abs(x-2*y/(1+pow(x,2)*pow(y,2)))*pow(x,abs(y))+pow(cos(atan(1/z)),2) << endl;
    }
};
int main()
{
    setlocale(LC_ALL, "");
    AnyClass *p1 = new AnyClass();
    p1->set("w = ",(3.74*pow(10,-2)),(-0.825),(0.16*pow(10,2)));
    p1->print();
    delete p1;
    cin.sync();
    cin.get();
    return 0;
}
Но теперь ошибки более сложные:
Код
Первый этап обработки исключения по адресу 0x5128F7A9 (msvcr110d.dll) в Лаб4-ТЕСТ2.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00000000.
Необработанное исключение по адресу 0x5128F7A9 (msvcr110d.dll) в Лаб4-ТЕСТ2.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00000000.
Программа "[5112] Лаб4-ТЕСТ2.exe" завершилась с кодом 0 (0x0).
Перепробовал много разных вариантов, не понимаю в чем ошибка в первом случае (немного понимаю почему во втором). Но так же не понимаю почему в первом случае через объект класса не могу обратиться к закрытой переменной, при компиляции будет ругаться на отсутствие доступа (переменные по дефолту закрытые).
Просьба помочь разобраться
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.02.2013, 19:39
Ответы с готовыми решениями:

Внешние объекты в классе
Если класс исплользует какую то внешнюю переменную (например hWnd), то как будет более корректно...

Неразрешенные внешние элементы
Добрый вечер уважаемые! Написал простенькую програмульку которая по истечению времени должна...

Шаблоны: неразрешенные внешние элементы
Пишу шаблонный класс-массив. Появилась такая проблема. Если инициализировать конструктор и...

Неразрешенные внешние символы/элементы
появились такие ошибки error LNK1120: неразрешенных внешних элементов: 1 error LNK2019: ссылка на...

3
Don't worry, be happy
17171 / 10054 / 1935
Регистрация: 27.09.2012
Сообщений: 25,046
Записей в блоге: 1
14.02.2013, 20:07 2
Цитата Сообщение от Raikerian Посмотреть сообщение
При попытке реализовать с конструктором (прим. ниже) выдает ошибки:
Собственно объявление вижу.
C++
1
AnyClass();
а где реализация?

Добавлено через 47 секунд
C++
1
*p='\0';
А где выделение памяти и прочее?
1
9 / 9 / 4
Регистрация: 10.05.2011
Сообщений: 101
15.02.2013, 10:28  [ТС] 3
Цитата Сообщение от Croessmah Посмотреть сообщение
Собственно объявление вижу.
C++
1
AnyClass();
а где реализация?

Добавлено через 47 секунд
C++
1
*p='\0';
А где выделение памяти и прочее?
Реализация ниже вне класса же.
А вот насчет второго подробней пожалуйста, поможет ли оно исправить ошибку и как?
0
Don't worry, be happy
17171 / 10054 / 1935
Регистрация: 27.09.2012
Сообщений: 25,046
Записей в блоге: 1
15.02.2013, 21:00 4
Цитата Сообщение от Raikerian Посмотреть сообщение
Реализация ниже вне класса же.
Цитата Сообщение от Raikerian Посмотреть сообщение
C++
1
2
AnyClass();
AnyClass(double,double,double);
Вижу это:
C++
1
2
3
4
5
6
7
AnyClass::AnyClass(double x1, double y1, double z1)
    {
        *p='\0';
        x = x1;
        y = y1;
        z = z1;
    }
А где конструктор без параметров реализуется?



Цитата Сообщение от Raikerian Посмотреть сообщение
А вот насчет второго подробней пожалуйста, поможет ли оно исправить ошибку и как?
У Вас память не выделена, а Вы пытаетесь туда что-то "запихнуть"
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.02.2013, 21:00

Неразрешенные внешние элементы. Где ошибка?
Здравствуйте! Есть один проект WorkerCalculate.cpp: // WorkerCalculate.cpp: определяет...

Библиотека fltk и неразрешенные внешние элементы
Здравствуйте. Уже не знаю, куда обратится, пишу сюда. Извиняюсь, если вопрос не новый, но думаю...

При создании объекта класса ошибки: LNK1120 (неразрешенные внешние элементы), 2001, 2020
При создании объекта класса в методе другого класса ругается: &quot;Неразрешенных внешних элементов -...

Ошибки линковки: неразрешенные внешние символы
#include &lt;QObject&gt; class A : QObject{ Q_OBJECT public: A() : QObject(){} int x;...


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

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

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