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

Константные статические объекты класса. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
29.12.2010, 17:06     Константные статические объекты класса. #1
Здравствуйте. Есть класс "матрица" нужно задать константные матрицы такие как E - единичная матрица и т.д., как это сделать?
Здесь typedef и include
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
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
#include <limits>
#include <iomanip>
#include <ctime>
#include <cmath>
 
using namespace std;
 
typedef std::vector<int> VI;
typedef std::vector<VI> VVI;
typedef std::pair<int,int> PII;
typedef std::pair<double,double> PDD;
 
typedef long long LL;
 
#define FOR(i,a,b) for (int i(a), _n(b); i < _n; ++i)
#define MIN(a,b) ( (a) < (b) ? a : b )
#define MAX(a,b) ( (a) > (b) ? a : b )
#define ABS(a) ( (a) < 0 ? -(a) : a )
#define ALL(a) a.begin(), a.end()
#define MP(a,b) make_pair(a,b)
 
const LL base = 1000*1000*1000;
 
VI operator + ( const VI &a, const VI &b ) {
    VI res = a;
    for( int i = 0, carry = 0; i < max( a.size(), b.size() ) || carry; ++i ) {
        if ( i == res.size() ) res.push_back( 0 );
        res[ i ] = ( i >= a.size() ? 0 : a[ i ] ) + ( i >= b.size() ? 0 : b[ i ] ) + carry;
        carry = res[ i ] / base;
        res[ i ] %= base;
    }
    return res;
}
 
VI operator *(const VI &a, const VI &b)
{
    VI res(a.size() + b.size());
    for(int i = 0, carry = 0; i < a.size(); ++i)
        for(int j = 0; j < b.size() || carry; ++j)
        {
            LL cur = res[i+j] + a[i] * 1ll * (j < b.size() ? b[j] : 0) + carry;
            res[i+j] = cur % base;
            carry = cur / base;
        }
    while (!res.back() && res.size() > 1) res.pop_back();
    return res;
}
 
VI operator *= (VI &a, VI b)
{
    return a = a * b;
}
 
VI BinPow(const int &a, int n)
{
    VI res(1,1), b(1,a);
    while (n) if (n & 1) {res *= b; --n;} else {b *= b; n >>= 1;}
    return res;
}

C++
1
2
3
4
5
6
7
8
9
10
11
12
typedef std::vector<int> VI;
 
class matrix
{
    VI _11, _12, _21, _22;
public:
    // конструкторы класса
 
    static const matrix E = matrix( 1, 0, 0, 1 ); // пытался определить так, но безуспешно.
 
    // методы класса
};
Да, мне надо операции с длинными числами, поэтому не смотрите на то что элементами матрицы есть вектора.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2010, 17:06     Константные статические объекты класса.
Посмотрите здесь:

Константные объекты C++
C++ статические и динамические объекты с++
C++ Константные функции-члены класса, возвращающие ссылку на константу
константные поля класса C++
Статические объекты C++
Константные методы и объекты класса C++
C++ Выделение статической памяти, не используя статические объекты
Где инициализировать константные данные класса? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Минич
 Аватар для Минич
66 / 66 / 3
Регистрация: 26.11.2010
Сообщений: 123
29.12.2010, 20:05     Константные статические объекты класса. #2
Статические данные-члены класса нельзя инициализировать в определении класса, только в нее его
C++
1
<тип> <имя класса>::<статическая переменная> = <значение>;
И еще, элементы структуры (класса) могут быть любого любого типа, за исключением самого типа структуры(класса), внутри которой они определены. Вы можете включить в структуру указатель на переменную типа структуры (класса)
Yandex
Объявления
29.12.2010, 20:05     Константные статические объекты класса.
Ответ Создать тему
Опции темы

Текущее время: 01:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru