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

C++/CLI

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Apprentice
5 / 5 / 0
Регистрация: 29.05.2011
Сообщений: 39
#1

модификаторы и спецификаторы - C++/CLI

17.06.2011, 21:18. Просмотров 1177. Ответов 2
Метки нет (Все метки)

Добрый вечер.. такой вопрос, как следует объявлять классы и неймспейсы чтобы их было видно в других файлах? пытался объявить через extern, но не получилось.

Form1.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "fstream"
#include "stdlib.h"
#include "HASH_CLASS.h"
 
 namespace Hash1 {       // требуется внешнее связывание
 
//-----------------------
 
    public ref class Form1 : public System::Windows::Forms::Form 
    {
 
    //----------------------------
 
    _int64 ptr, len_act_bl, num_act_bl;     // дабы получить доступ к этим переменным из HASH_CLASS.h
    };
}
HASH_CLASS.h:
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
#ifndef HASH_CLASS
#include "ripemd256.h"
 
class HASH_FUNCTIONS abstract
{
protected: _int32 X[16], digest[8];
protected: virtual _int32* GetHashBlock(_int32 *X) {return digest;};
public: _int32* GetHash(array <unsigned char> ^arr) {
                _int32 *hash_bl = new _int32[8];
                for(int i=0;i<8;i++){
                    digest[i]=0; hash_bl[i]=0; }
                for (int j=0;j<Hash1::Form1::len_act_bl/512+(Hash1::Form1::len_act_bl%512!=0);j++)    // здесь он ругается на то что Hash1 не является именем класса или пространства имен
                {
                    for (int i=0;i<16;i++)
                        X[i]=arr[16*j+4*i]*0x1000000 + arr[16*j+4*i+1]*0x10000 + arr[16*j+4*i+2]*0x100 + arr[16*j+4*i+3];
                    hash_bl=GetHashBlock(X);
                    for (int i=0;i<8;i++)
                        digest[i]+=hash_bl[i]; 
                }
                delete [] hash_bl;
                return digest;
           }
};
 
class RIPEMD256 : public HASH_FUNCTIONS    // аналогично с классом.. без внешнего связывания не могу описать метод в файле ripemd256.h
{
 
_int32* GetHashBlock(_int32 *X);
};
#endif
ripemd256.h
C++
1
2
3
4
#ifndef RIPEMD_256
_int32* RIPEMD256::GetHashBlock (const _int32 *X)   //  RIPEMD256: не является именем класса или пространства имен
{...}
#endif
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2011, 21:18
Я подобрал для вас темы с готовыми решениями и ответами на вопрос модификаторы и спецификаторы (C++/CLI):

Спецификаторы %e и %l - C++
Доброго времени суток! Столкнулся с кодом, который читает из строки s числа формата x.xxxxe+xx, то есть в качестве примера...

Спецификаторы типа - C++
Почему рекомендуется предпочитать type unsigned/signed type и double float/long double? Добавлено через 10 секунд Особенно последнее...

Спецификаторы преобразования - C (СИ)
Всем привет) Я начинаю изучать С и мне не очень понятно что обозначают спецификаторы преобразования: тип выводимых данных или их вид?...

Спецификаторы дат - C#
Вот фаил надо создать. Сформировать ему грамотно имя. Делаю так String Path = DateTime.Now.ToString(&quot;myyyy&quot;) + &quot;log.xml&quot;; получаю ...

Спецификаторы типов - C (СИ)
Здравствуйте. В книге прочитал: Вопрос: какие компьютеры называются некоторыми? В каких компьютерах не будут работать...

спецификаторы преобразования - C++
Даны спецификаторы преобразования A) %f B) %d C) %x D) %o E) %u 1.для вывода десятичных целых чисел со знаком? 2. для...

2
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
17.06.2011, 21:33 #2
Цитата Сообщение от Apprentice Посмотреть сообщение
Добрый вечер.. такой вопрос, как следует объявлять классы и неймспейсы чтобы их было видно в других файлах?
Просто заинклюдить в нужном файле хедер з нужным тебе описанием класса/пространства имен не пробовал ?
0
Apprentice
5 / 5 / 0
Регистрация: 29.05.2011
Сообщений: 39
18.06.2011, 00:50  [ТС] #3
я после инклюдов дописывал: using namespace Hash1; но вылетала ошибка
Hash1: пространство имен с таким именем не существует

Добавлено через 2 часа 56 минут
Цитата Сообщение от asics Посмотреть сообщение
Просто заинклюдить в нужном файле хедер з нужным тебе описанием класса/пространства имен не пробовал ?
инклюдил.. ошибки не исчезли((
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2011, 00:50
Привет! Вот еще темы с ответами:

Спецификаторы наследования - C++
Всем здрасьте, у меня возник такой вопросик. Есть базовый класс - Main. Есть класс, который наследует Main - Object Object наследует...

Scanf и спецификаторы формата - C++
Собственно, объясните подробно, как работает эта строка scanf(&quot;%*s&quot;, &amp;str1);

Наследование, спецификаторы доступа - C++
Всем привет. Подскажите, что я не правильно делаю Код: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class...

Непонятны спецификаторы в printf - C (СИ)
Прошу объяснить подробно , что делает строка: #define TRACE(msg, val) printf(&quot;TRACE: %*c&quot; msg, 2 * level + 1, ' ', val); Как...


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

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

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