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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Glam_Man
6 / 6 / 0
Регистрация: 15.10.2011
Сообщений: 73
#1

Компилятор не видит структуру внутри класса - C++

01.07.2012, 16:36. Просмотров 1797. Ответов 19
Метки нет (Все метки)

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
#pragma once
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <locale>
#include <stdexcept>
class Sequences
{
public:
    struct SetsStructure
    {
        double RecurrenceEquations;
        double *ElementsOfSets;
        int NumberOfElements;
        int NumberOfSet;
    };
    double *SetsStructure;
public:
    int MethodOfDirect;
    int NumberOfSets;
    int NumberOfElements;
    int EditedSet;
    int RecurrenceRelation;
public:
    static __declspec(dllexport) bool RecursiveAdditionOfSet(int, double)
    {
        std::cin.ignore(10,'\n');
        std::cout << "1. Ввод количества элементов множества с номером" << SetsScructure.NumberOfSet-1 << std::endl;
        std::cin >> NumberOfElements;
        fflush(stdin);
        SetsStructure = new int Sequences.NumberOfElements-1;
        std::cout << "2.Ввод первого члена последовательности (x(0))" << std::endl;
        std::cin >> SetsStructure.ElementsOfSets[0];
        fflush(stdin);
        std::cout << "3.Ввод способа выражения для последующих членов последовательности" << std::endl;
        std::cin >> RecurrenceRelation;
        return 0;
    }
public:
    static __declspec(dllexport) bool InputSets(void)
    {
        int Size;
        std::cin.ignore(10,'\n');
        std::cout << "1.Ввод способа добавления данных" << std::endl;
        std::cin >> MethodOfDirect;
        fflush(stdin);
        std::cout << "2.Ввод количество задаваемых множеств" << std::endl;
        std::cin >> NumberOfSets;
        SetsStructure = new int NumberOfSets;
        for (int i = 0; i < NumberOfSets-1; i++)
        {
            SetsStructure[i].RecurrenceEquations = new double NumberOfSets;
            SetsStructure[i].ElementsOfSets = new double NumberOfSets;
        }
        fflush(stdin);
        std::cout << "3.Ввод номера редактируемого множества" << std::endl;
        std::cin >> EditedSet;
        std::cout << "4.Выберите способ задания множеств" << std::endl;
        return 0;
    }
};
В чём может быть проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2012, 16:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Компилятор не видит структуру внутри класса (C++):

Компилятор не видит объявление класса - C++
//Cperson.h #pragma once #include &quot;variables.h&quot; #include &quot;Caudio.h&quot; #include &quot;Cblock.h&quot; #include &lt;vector&gt; enum part{DOWN, UP,...

Ссылка на структуру внутри класса - C++
Программлю на с++ второй день нужно определить указатель на структуру и проинициализировать указатель. Код вот: typedef volatile...

Функция потока не видит структуру класса - C++
Здравствуйте! Подскажите, как это исправить: class ClassA { struct st { int a; }; ....... };

Структуру переделать в класс, чтобы массив был внутри класса - C++
есть структура struct CUSTOMER { unsigned short number; char name; char tel; ...

компилятор ругается на структуру - C++
попалась вот такая вот структура для графа, но компилятору она не нравится.... template &lt;class V, class E&gt; struct graph { ...

Компилятор не видит cout - C++
Создал класс, вот его функции #include &quot;stdafx.h&quot; #include &quot;Complex.h&quot; #include &lt;iostream&gt; Complex::Complex(int realPart, int...

19
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
01.07.2012, 16:45 #2
C++
1
2
double *SetsStructure; // это как?
SetsScructure.NumberOfSet-1 // тут опечатка в названии
0
Glam_Man
6 / 6 / 0
Регистрация: 15.10.2011
Сообщений: 73
01.07.2012, 16:49  [ТС] #3
Цитата Сообщение от Schizorb Посмотреть сообщение
C++
1
2
double *SetsStructure; // это как?
SetsScructure.NumberOfSet-1 // тут опечатка в названии
Поправил и то и то, всё равно ругается, 42 ошибки
0
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
01.07.2012, 17:01 #4
всегда в таких случаях есть смысл постить все ошибки сюда.
там случайно не конфликты из-за одинаковых имен структуры и переменной?
0
Glam_Man
6 / 6 / 0
Регистрация: 15.10.2011
Сообщений: 73
01.07.2012, 18:55  [ТС] #5
Подредактировал код, теперь 12 ошибок
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
#pragma once
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <locale>
#include <stdexcept>
class Sequences
{
public:
    struct SetsStructure
    {
        static double RecurrenceEquations;
        static double *ElementsOfSets;
        static int NumberOfElements;
        static int NumberOfSet;
    };
    static int MethodOfDirect;
    static int NumberOfSets;
    static int NumberOfElements;
    static int EditedSet;
    static int RecurrenceRelation;
    static int count;
    static __declspec(dllexport) bool RecursiveAdditionOfSet(int NumberOfElements_, int count_, int RecurrenceRelation_, double _SetsStructure)
    {
        std::cin.ignore(10,'\n');
        std::cout << "1. Ввод количества элементов множества с номером" << SetsStructure.NumberOfSet-1 << std::endl;
        std::cin >> Sequences.NumberOfElements;
        fflush(stdin);
        Sequences.SetsStructure = new int Sequences.NumberOfElements-1;
        for (count = 0; count < NumberOfSets-1; count++)
        {
            Sequences.SetsStructure.RecurrenceEquations = new double Sequences.NumberOfSets-1;
            Sequences.SetsStructure.ElementsOfSets = new double Sequences.NumberOfSets-1;
        }
        std::cout << "2.Ввод первого члена последовательности (x(0))" << std::endl;
        std::cin >> SetsStructure.ElementsOfSets[0];
        fflush(stdin);
        std::cout << "3.Ввод способа выражения для последующих членов последовательности" << std::endl;
        std::cin >> RecurrenceRelation;
        return 0;
    }
    static __declspec(dllexport) bool InputSets(void)
    {
        static int Size;
        std::cin.ignore(10,'\n');
        std::cout << "1.Ввод способа добавления данных" << std::endl;
        std::cin >> MethodOfDirect;
        fflush(stdin);
        std::cout << "2.Ввод количество задаваемых множеств" << std::endl;
        std::cin >> NumberOfSets;
        fflush(stdin);
        std::cout << "3.Ввод номера редактируемого множества" << std::endl;
        std::cin >> EditedSet;
        std::cout << "4.Выберите способ задания множеств" << std::endl;
        return 0;
    }
};
Ошибки:
Ошибка 3 error C2143: синтаксическая ошибка: отсутствие ";" перед "." c:\%...%\sequences\sequences\Sequences.h 29 Sequences
Ошибка 4 error C2143: синтаксическая ошибка: отсутствие ";" перед "." c:\%...%\sequences\sequences\Sequences.h 29 Sequences
Ошибка 5 error C2143: синтаксическая ошибка: отсутствие ";" перед "." c:\%...%\sequences\sequences\Sequences.h 32 Sequences
Ошибка 6 error C2143: синтаксическая ошибка: отсутствие ";" перед "." c:\%...%\sequences\sequences\Sequences.h 32 Sequences
Ошибка 7 error C2143: синтаксическая ошибка: отсутствие ";" перед "." c:\%...%\sequences\sequences\Sequences.h 33 Sequences
Ошибка 8 error C2143: синтаксическая ошибка: отсутствие ";" перед "." c:\%...%\sequences\sequences\Sequences.h 33 Sequences
Ошибка 12 error C2143: синтаксическая ошибка: отсутствие ";" перед "." c:\%...%\sequences\sequences\Sequences.h 29 Sequences
Ошибка 13 error C2143: синтаксическая ошибка: отсутствие ";" перед "." c:\%...%\sequences\sequences\Sequences.h 29 Sequences
Ошибка 14 error C2143: синтаксическая ошибка: отсутствие ";" перед "." c:\%...%\sequences\sequences\Sequences.h 32 Sequences
Ошибка 15 error C2143: синтаксическая ошибка: отсутствие ";" перед "." c:\%...%\sequences\sequences\Sequences.h 32 Sequences
Ошибка 16 error C2143: синтаксическая ошибка: отсутствие ";" перед "." c:\%...%\sequences\sequences\Sequences.h 33 Sequences
Ошибка 17 error C2143: синтаксическая ошибка: отсутствие ";" перед "." c:\%...%\sequences\sequences\Sequences.h 33 Sequences
0
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
01.07.2012, 19:06 #6
Если нужен доступ к статическому члену, при отсутствии объекта, то можно использовать такой синтаксис:
C++
1
std::cout << "1. Ввод количества элементов множества с номером" << SetsStructure::NumberOfSet-1 << std::endl;
А вот это как? SetsStructure - название типа, вы ему присваиваете указатель на int.
C++
1
Sequences.SetsStructure = new int Sequences.NumberOfElements-1;
Или я чего не понимаю, или код мутный...
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.07.2012, 19:10 #7
Glam_Man, скажи, а зачем ты все переменные объявил как static ? В этом есть необходимость?
0
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
01.07.2012, 19:13 #8
Schizorb, очень мутный )
0
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
01.07.2012, 21:21 #9
наверно потому, что статические функции класса экпортятся из дллки. абра кадабра получилась в общем. Не знаю можно ли и как экпортить классы. Но вот такой подход должен работать:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// h file
struct SomeStruct
{
   int x;
   int y;
   int z;
};
 
__declspec(dllexport) bool SomeFunction(SomeStruct* someStruct, int arg1, int arg2);
 
 
// cpp file
__declspec(dllexport) bool SomeFunction(SomeStruct* someStruct, int arg1, int arg2)
{
  // тут что-то делаем.
   return true;
}
Такая вот эмуляция с++ классов. Только в случае классов при вызове метода в него неявно передается указатель на объект, а в этом случае все это делается явно.
Сперва создается структура, в которой только данные, потом эта структура передается по указателю или ссылке в такие вот "методы". Они так же могут быть оформлены в виде статических функций класса, но наверно в этом нет особой необходимости. При таком подходе нет нужды в статических переменных, которые сейчас в коде как одна большая глобальная переменная.


Еще вариант - сделать класс как класс, чтобы он ничего про дллки не знал. и заэксекпортить пару функций для динамического создания и удаления объектов этого класса.
При определенной конфигурации сборки екзешника и дллки, удалять такие объекты можно будет и в екзешнике.
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.07.2012, 23:40 #10
Цитата Сообщение от DU Посмотреть сообщение
наверно потому, что статические функции класса экпортятся из дллки.
Ты на мой вопрос отвечал?
0
Glam_Man
6 / 6 / 0
Регистрация: 15.10.2011
Сообщений: 73
02.07.2012, 10:48  [ТС] #11
Цитата Сообщение от lazybiz Посмотреть сообщение
Glam_Man, скажи, а зачем ты все переменные объявил как static ? В этом есть необходимость?
Наверное нет, но если не объявлять как static, то компилятор начинает ругаться
Цитата Сообщение от DU Посмотреть сообщение
наверно потому, что статические функции класса экпортятся из дллки. абра кадабра получилась в общем. Не знаю можно ли и как экпортить классы. Но вот такой подход должен работать:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// h file
struct SomeStruct
{
   int x;
   int y;
   int z;
};
 
__declspec(dllexport) bool SomeFunction(SomeStruct* someStruct, int arg1, int arg2);
 
 
// cpp file
__declspec(dllexport) bool SomeFunction(SomeStruct* someStruct, int arg1, int arg2)
{
  // тут что-то делаем.
   return true;
}
Такая вот эмуляция с++ классов. Только в случае классов при вызове метода в него неявно передается указатель на объект, а в этом случае все это делается явно.
Сперва создается структура, в которой только данные, потом эта структура передается по указателю или ссылке в такие вот "методы". Они так же могут быть оформлены в виде статических функций класса, но наверно в этом нет особой необходимости. При таком подходе нет нужды в статических переменных, которые сейчас в коде как одна большая глобальная переменная.


Еще вариант - сделать класс как класс, чтобы он ничего про дллки не знал. и заэксекпортить пару функций для динамического создания и удаления объектов этого класса.
При определенной конфигурации сборки екзешника и дллки, удалять такие объекты можно будет и в екзешнике.
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
//Sequences.cpp
#include "stdafx.h"
#include "Sequences.h"
__declspec(dllexport) bool InputSets(Sequences::SetsStructure* setsStructure)
{
    int Size;
    std::cin.ignore(10,'\n');
    std::cout << "1.Ввод способа добавления данных" << std::endl;
    std::cin >> Sequences::SetsStructure::MethodOfDirect;
    fflush(stdin);
    std::cout << "2.Ввод количество задаваемых множеств" << std::endl;
    std::cin >> Sequences::SetsStructure::NumberOfSets[0];
    fflush(stdin);
    std::cout << "3.Ввод номера редактируемого множества" << std::endl;
    std::cin >> Sequences::SetsStructure::EditedSet;
    std::cout << "4.Выберите способ задания множеств" << std::endl;
    return true;
}
__declspec(dllexport) bool RecursiveAdditionOfSet(Sequences::SetsStructure* setsStructure)
{
    std::cin.ignore(10,'\n');
    std::cout << "1. Ввод количества элементов множества с номером" << Sequences::SetsStructure::NumberOfSet-1 << std::endl;
    std::cin >> Sequences::SetsStructure::NumberOfElements;
    fflush(stdin);
    Sequences::SetsStructure::NumberOfSets = new int Sequences::SetsStructure::NumberOfElements-1;
    for (Sequences::SetsStructure::count = 0; &Sequences::SetsStructure::count < Sequences::SetsStructure::NumberOfSets-1; Sequences::SetsStructure::count++)
    {
        Sequences::SetsStructure::RecurrenceEquations[Sequences::SetsStructure::count] = new double Sequences::SetsStructure::NumberOfSets-1;
        Sequences::SetsStructure::ElementsOfSets[Sequences::SetsStructure::count] = new double Sequences::SetsStructure::NumberOfSets-1;
    }
    std::cout << "2.Ввод первого члена последовательности (x(0))" << std::endl;
    std::cin >> Sequences::SetsStructure::ElementsOfSets[0][0];
    fflush(stdin);
    std::cout << "3.Ввод способа выражения для последующих членов последовательности" << std::endl;
    std::cin >> Sequences::SetsStructure::RecurrenceRelation;
    return true;
}
 
//Sequences.h
#pragma once
#include "iostream"
#include "locale.h"
class Sequences
{
public:
    struct SetsStructure
    {
        static double **RecurrenceEquations;
        static double **ElementsOfSets;
        static int *NumberOfSets;
        static int NumberOfElements;
        static int NumberOfSet;
        static int MethodOfDirect;
        static int EditedSet;
        static int RecurrenceRelation;
        static int count;
    };
    __declspec(dllexport) bool InputSets(SetsStructure* setsStructure);
    __declspec(dllexport) bool RecursiveAdditionOfSet(SetsStructure* setsStructure);
};
Переделал. Теперь компилятор выдаёт 3 ошибки:
Ошибка 2 error C2143: синтаксическая ошибка: отсутствие ";" перед "Sequences::SetsStructure::NumberOfElements" c:\%...%\Sequences\Sequences\Sequences.cpp 26 Sequences
Ошибка 4 error C2143: синтаксическая ошибка: отсутствие ";" перед "Sequences::SetsStructure::NumberOfSets" c:\%...%\Sequences\Sequences\Sequences.cpp 29 Sequences
Ошибка 6 error C2143: синтаксическая ошибка: отсутствие ";" перед "Sequences::SetsStructure::NumberOfSets" c:\%...%\Sequences\Sequences\Sequences.cpp 30 Sequences
Что на этот раз неверно? Всё же первый раз в первый класс

Добавлено через 58 секунд
У fflush() какая область видимости?
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
02.07.2012, 10:53 #12
Цитата Сообщение от Glam_Man Посмотреть сообщение
У fflush() какая область видимости?
Обычная. В пространство имен она не входит.
Было бы лучше если бы ты показал код целиком.
0
Glam_Man
6 / 6 / 0
Регистрация: 15.10.2011
Сообщений: 73
02.07.2012, 10:59  [ТС] #13
Цитата Сообщение от lazybiz Посмотреть сообщение
Обычная. В пространство имен она не входит.
Было бы лучше если бы ты показал код целиком.
C++
1
//recource.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Sequences.h
#pragma once
#include "iostream"
#include "locale.h"
class Sequences
{
public:
    struct SetsStructure
    {
        static double **RecurrenceEquations;
        static double **ElementsOfSets;
        static int *NumberOfSets;
        static int NumberOfElements;
        static int NumberOfSet;
        static int MethodOfDirect;
        static int EditedSet;
        static int RecurrenceRelation;
        static int count;
    };
    __declspec(dllexport) bool InputSets(SetsStructure* setsStructure);
    __declspec(dllexport) bool RecursiveAdditionOfSet(SetsStructure* setsStructure);
};
C++
1
2
// stdafx.h
#pragma once
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
//AssemblyInfo.cpp
#include "stdafx.h"
 
using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;
using namespace System::Runtime::InteropServices;
using namespace System::Security::Permissions;
 
[assembly:AssemblyTitleAttribute("Sequences")];
[assembly:AssemblyDescriptionAttribute("")];
[assembly:AssemblyConfigurationAttribute("")];
[assembly:AssemblyCompanyAttribute("DreamLair")];
[assembly:AssemblyProductAttribute("Sequences")];
[assembly:AssemblyCopyrightAttribute("Copyright (c) DreamLair 2012")];
[assembly:AssemblyTrademarkAttribute("")];
[assembly:AssemblyCultureAttribute("")];
 
[assembly:AssemblyVersionAttribute("1.0.*")];
 
[assembly:ComVisible(false)];
 
[assembly:CLSCompliantAttribute(true)];
 
[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)];
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
//Sequences.cpp
// Главный DLL-файл.
#include <stdafx.h>
#include "Sequences.h"
__declspec(dllexport) bool InputSets(Sequences::SetsStructure* setsStructure)
{
    int Size;
    std::cin.ignore(10,'\n');
    std::cout << "1.Ввод способа добавления данных" << std::endl;
    std::cin >> Sequences::SetsStructure::MethodOfDirect;
    fflush(stdin);
    std::cout << "2.Ввод количество задаваемых множеств" << std::endl;
    std::cin >> Sequences::SetsStructure::NumberOfSets[0];
    fflush(stdin);
    std::cout << "3.Ввод номера редактируемого множества" << std::endl;
    std::cin >> Sequences::SetsStructure::EditedSet;
    std::cout << "4.Выберите способ задания множеств" << std::endl;
    return true;
}
__declspec(dllexport) bool RecursiveAdditionOfSet(Sequences::SetsStructure* setsStructure)
{
    std::cin.ignore(10,'\n');
    std::cout << "1. Ввод количества элементов множества с номером" << Sequences::SetsStructure::NumberOfSet-1 << std::endl;
    std::cin >> Sequences::SetsStructure::NumberOfElements;
    fflush(stdin);
    Sequences::SetsStructure::NumberOfSets = new int Sequences::SetsStructure::NumberOfElements-1;
    for (Sequences::SetsStructure::count = 0; &Sequences::SetsStructure::count < Sequences::SetsStructure::NumberOfSets-1; Sequences::SetsStructure::count++)
    {
        Sequences::SetsStructure::RecurrenceEquations[Sequences::SetsStructure::count] = new double Sequences::SetsStructure::NumberOfSets-1;
        Sequences::SetsStructure::ElementsOfSets[Sequences::SetsStructure::count] = new double Sequences::SetsStructure::NumberOfSets-1;
    }
    std::cout << "2.Ввод первого члена последовательности (x(0))" << std::endl;
    std::cin >> Sequences::SetsStructure::ElementsOfSets[0][0];
    fflush(stdin);
    std::cout << "3.Ввод способа выражения для последующих членов последовательности" << std::endl;
    std::cin >> Sequences::SetsStructure::RecurrenceRelation;
    return true;
}
C++
1
2
//stdafx.cpp
#include "stdafx.h"
Ещё 2 файла ресурсов
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
02.07.2012, 12:10 #14
Тут много чего надо править...
Во-первых тебе надо избавиться от статических переменных, они ни к чему. Во-вторых убрать инклуды из заголовочных файлов. Их там быть не должно.
Вот простой пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//
// main.cpp
//
 
#include <iostream>
#include "main.h"
 
extern "C" __declspec( dllexport ) bool InputSets( test *p )
{
    std::cin >> p->a;
    return true;
}
 
extern "C" __declspec( dllexport ) bool RecursiveAdditionOfSet( test *p )
{
    p->a = 20;
    std::cout << p->a;
    return true;
}
C++
1
2
3
4
5
6
7
8
//
// main.h
//
 
class test {
public:
    int a;
};
Измени по аналогии и все должно заработать.
extern "C" дает реальные имена экспортируемым функциям.
0
Glam_Man
6 / 6 / 0
Регистрация: 15.10.2011
Сообщений: 73
02.07.2012, 13:17  [ТС] #15
Цитата Сообщение от lazybiz Посмотреть сообщение
Тут много чего надо править...
Во-первых тебе надо избавиться от статических переменных, они ни к чему. Во-вторых убрать инклуды из заголовочных файлов. Их там быть не должно.
Вот простой пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//
// main.cpp
//
 
#include <iostream>
#include "main.h"
 
extern "C" __declspec( dllexport ) bool InputSets( test *p )
{
    std::cin >> p->a;
    return true;
}
 
extern "C" __declspec( dllexport ) bool RecursiveAdditionOfSet( test *p )
{
    p->a = 20;
    std::cout << p->a;
    return true;
}
C++
1
2
3
4
5
6
7
8
//
// main.h
//
 
class test {
public:
    int a;
};
Измени по аналогии и все должно заработать.
extern "C" дает реальные имена экспортируемым функциям.
*p где объявлять и чем это является?
0
02.07.2012, 13:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2012, 13:17
Привет! Вот еще темы с ответами:

Компилятор не видит циклы! - C++
Конечно, я понимаю что процессор ошибиться не может, и дело только в моем коде, но я считаю что я правильно использую команды break и...

Компилятор не видит vector - C++
#include &lt;vector&gt; using std::vector; vector&lt;double&gt; v; выбивает ошибку вектор не стд, вектор не определён. подскажите плз почему...

Создать объект внутри класса, который может вызывать функцию этого класса - C++
Ребята помогите уже несколько дней мучаюсь. Хочу сделать программу в консоле демонстрации работы лифта в здании 2 этажа. Сделал класс...

Компилятор не видит #include <vcl.h> - C++
#include &lt;iostream&gt; #include &lt;locale.h&gt; #include &lt;vcl.h&gt; #pragma hdrstop using namespace std; ...


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

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

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