Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Инициализация класса матрицы, двумерным массивом 
V
    Опции темы
JackYF
Дата 30.11.2007, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Буквально сейчас об этом подумал. Как воркэраунд попробую сделать.
...
Блин, что за ёлки...
опять ему что-то не так:
Код

template < typename T >                                                                                                                              
        class standart_matrix                                                                                                                                
        {                                                                                                                                                    
         private:                                                                                                                                            
            typedef standart_matrix<T> self;                                                                                                                 
                                                                                                                                                             
            size_t __rows;                                                                                                                                   
            size_t __columns;                                                                                                                                
            T* __storage;                                                                                                                                    
                                                                                                                                                             
         protected:                                                                                                                                          
            ulong _smp_to_storage_pos(const matrix_position& smp) const;                                                                                     
            void _verify_sizes(const self& other) const;                                                                                                     
                                                                                                                                                             
            void _ctor(size_t rows, size_t columns);                                                                                                         
            void _ctor(const self& other);                                                                                                                   
            void _dtor();                                                                                                                                    
         public:                                                                                                                                             
            typedef matrix_position smp;                                                                                                                     
            typedef size_t size_type;                                                                                                                        
                                                                                                                                                             
            standart_matrix(size_t rows, size_t columns);                                                                                                    
                                                                                                                                                             
            template < size_t rows, size_t columns >                                                                                                         
            standart_matrix(const T (&values)[rows][columns])                                                                                                
            {                                                                                                                                                
                _ctor(rows, columns);                                                                                                                        
                //this->assign(values);                                                                                                                      
            }                                                                                                                                                
                                                                                                                                                             
            standart_matrix(const self& other);                                                                                                              
            self& operator=(const self& other);template < size_t rows, size_t columns >                                                                                                         
            void assign(const T (&values)[rows][columns])                                                                                                    
            {                                                                                                                                                
                _dtor();                                                                                                                                     
                _ctor(rows, columns);                                                                                                                        
                for (size_t i = 0; i < __rows; ++i)                                                                                                          
                {                                                                                                                                            
                    for (size_t j = 0; j < __columns; ++j)                                                                                                   
                    {                                                                                                                                        
                        this->set(smp(i,j), values[i][j]);                                                                                                   
                    }                                                                                                                                        
                }                                                                                                                                            
            }                                                                                                                                                
                                                                                                                                                             
            T& operator[](const smp& index );                                                                                                                
            const T& operator[](const smp& index) const;                                                                                                     
            void set(const smp& index, const T& value);                                                                                                      
            const T& get(const smp& index) const;                                                                                                            
                                                                                                                                                             
            standart_matrix<T>& operator+=(const standart_matrix<T>& other);                                                                                 
            standart_matrix<T>& operator-=(const standart_matrix<T>& other);                                                                                 
            standart_matrix<T>& operator*=(const standart_matrix<T>& other);                                                                                 
                                                                                                                                                             
            const self operator-() const;                                                                                                                    
                                                                                                                                                             
            size_t rows() const;                                                                                                                             
            size_t columns() const;                                                                                                                          
                                                                                                                                                             
            virtual ~standart_matrix();                                                                                                                      
                                                                                                                                                             
            const standart_matrix<T> operator+(const standart_matrix<T>& other) const;                                                                       
            const standart_matrix<T> operator-(const standart_matrix<T>& other) const;                                                                       
            const standart_matrix<T> operator*(const standart_matrix<T>& other) const;                                                                       
                                                                                                                                                             
            bool operator==(const standart_matrix<T>& other) const;                                                                                          
            bool operator!=(const standart_matrix<T>& other) const;      

Ругается на строчку №27 так:
Цитата

/home/jackyf/Work/Programming/linux/yfLibrary/workcopy-linux/yf/math/standart_matrix.hpp: In constructor ‘yf::math::standart_matrix<T>::standart_matrix(const T (&)[rows][columns]) [with long unsigned int rows = 2ul, long unsigned int columns = 3ul, T = int]’:
test.cpp:111:   instantiated from here
/home/jackyf/Work/Programming/linux/yfLibrary/workcopy-linux/yf/math/standart_matrix.hpp:67: error: no matching function for call to ‘yf::math::standart_matrix<int>::_ctor(<unresolved overloaded function type>, <unresolved overloaded function type>)’
/home/jackyf/Work/Programming/linux/yfLibrary/workcopy-linux/yf/math/standart_matrix.hpp:145: note: candidates are: void yf::math::standart_matrix<T>::_ctor(size_t, size_t) [with T = int]
/home/jackyf/Work/Programming/linux/yfLibrary/workcopy-linux/yf/math/standart_matrix.hpp:156: note:                 void yf::math::standart_matrix<T>::_ctor(const yf::math::standart_matrix<T>&) [with T = int]

Я же в функции ему передаю два size_t...  smile. Ну и денёк...

Это сообщение отредактировал(а) JackYF - 30.11.2007, 00:19


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 30.11.2007, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



JackYF, йа колдун:
Код

archimed7592@PC ~/testlabs/g++
$ cat ./main.cpp
#include <iostream>
template<typename T>
class Matrix
{
public:
        template<int m, int n>
        Matrix(const T (&values)[m][n]);
};

template<typename T>
template<int m, int n>

Matrix<T>::Matrix(const T (&values)[m][n])
{
        std::cout << m << "," << n << std::endl;
        for (int i = 0; i < m; ++i)
        {
                for (int j = 0; j < n; ++j)
                        std::cout << values[i][j] << " ";
                std::cout << std::endl;
        }
}

int main()
{
        int x[2][3] = { {1, 2, 3}, {4, 5, 6} };
        Matrix<int> t(x);
        return 0;
}

archimed7592@PC ~/testlabs/g++
$ g++ -v
Reading specs from E:/prg/devel/msys/mingw/bin/../lib/gcc/mingw32/3.4.2/specs
Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=
mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable
-languages=c,c++,f77,ada,objc,java --disable-win32-registry --disable-shared --e
nable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x --enable-ja
va-gc=boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchroniz
ation --enable-libstdcxx-debug
Thread model: win32
gcc version 3.4.2 (mingw-special)

archimed7592@PC ~/testlabs/g++
$ g++ ./main.cpp

archimed7592@PC ~/testlabs/g++
$



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
JackYF
Дата 30.11.2007, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Поломали они, что ли, это со времён 3-й мажорной версии?... тьху...

Это сообщение отредактировал(а) JackYF - 30.11.2007, 00:24


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 30.11.2007, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Тебе "<unresolved overloaded function type>" ни о чём не говорит? smile 


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
JackYF
Дата 30.11.2007, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(archimed7592 @  30.11.2007,  00:24 Найти цитируемый пост)
Тебе "<unresolved overloaded function type>" ни о чём не говорит? 

не-а. Я делаю _ctor(rows, columns), где rows типа size_t, columns типа size_t.

void _ctor(size_t, size_t); - функция есть.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 30.11.2007, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Дай полный код, который по идее должен быть компилябельным.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
bsa
Дата 30.11.2007, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



попробуй для начала еще size_t в template заменить на unsigned long.
PM   Вверх
JackYF
Дата 30.11.2007, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Сложно... просто у меня исходники друг на друга завязаны, типа библиотека. Отвязывать один исходник от библиотеки - гиблая задача.
В общем, выкладываю весь tar.gz "библиотеки".

Исходник теста:

Код

#include <yf/math/standart_matrix.hpp>
int main()
{
        int x[2][3] = { {1, 2, 3}, {4, 5, 6} };
        yf::math::standart_matrix<int> t(x);
        return 0;
}


Путь к библиотеке распакованной только надо будет прописать. Собирать по идее не потребуется. Но если что - там lib/configure, lib/Makefile...
Пропиши этому чуду только -DYF_CODE_32... при сборке... и [WINDOWS|LINUX]...
Да. надо бы привести это к виду нормальному...

Спать... спать...

Добавлено @ 00:42
И почему это я не могу аттачить tar.gz...

Добавлено через 3 минуты и 10 секунд
Цитата(bsa @  30.11.2007,  00:34 Найти цитируемый пост)
попробуй для начала еще size_t в template заменить на unsigned long.

Попробовал. К сожалению, ноль эффекта.

Добавлено через 6 минут и 51 секунду
Ушёл спать... всем большое спасибо за участие. Авось на свежую голову что-то надумается, завтра продолжу.

Это сообщение отредактировал(а) JackYF - 30.11.2007, 00:44

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  yf_src_0.08_1.tar.gz.fake.zip 38,51 Kb


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 30.11.2007, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



JackYF, шаман хренов smile. Я же спросил: не смущает? Вот это что, уже не ф-ции:
Код

   size_t rows() const;
   size_t columns() const;
??

С переименованными параметрами собирается на ура smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
JackYF
Дата 30.11.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Чертить многополосные флагштоки!  smile  smile !!!
М-да-а... smile вот это я протупил... smile утро вечера мудренее smile

Цитата(archimed7592 @  30.11.2007,  01:01 Найти цитируемый пост)
С переименованными параметрами собирается на ура

ты таки собирал моё чудо? smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 30.11.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(JackYF @  30.11.2007,  15:17 Найти цитируемый пост)
ты таки собирал моё чудо? smile 

угу - g++ ./main.cpp smile

Правда, пришлось немного пофиксить твои "кроссплатформенные" workaround'ы smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
JackYF
Дата 30.11.2007, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(archimed7592 @  30.11.2007,  17:17 Найти цитируемый пост)
Правда, пришлось немного пофиксить твои "кроссплатформенные" workaround'ы

Не подскажешь, которые? smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 30.11.2007, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Точно помню, что ругалось на 0xFFFFFFFFFFFFFFFF(max uint 64), а чего ещё, ес честно не помню - спать хотелось и нажимал ctrl+y на автомате smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
JackYF
Дата 30.11.2007, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(archimed7592 @  30.11.2007,  20:13 Найти цитируемый пост)
Точно помню, что ругалось на 0xFFFFFFFFFFFFFFFF(max uint 64)

учтём.

Цитата(archimed7592 @  30.11.2007,  20:13 Найти цитируемый пост)
спать хотелось и нажимал ctrl+y на автомате

ага, тоже в mcedit'е работаешь? smile

Добавлено через 23 секунды
Кстати, проблема-то решилась, наконец можно тему пометить как решённую.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 30.11.2007, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(JackYF @  30.11.2007,  21:59 Найти цитируемый пост)
ага, тоже в mcedit'е работаешь? smile

Вообще, работаю в EmEditor'е(кстати советую, как тупой редактор с примитивной подсветкой), а твоё правилось в FAR'е smile.

Добавлено через 57 секунд
Всмысле редактор умный, но как IDE не катит smile. Зато работает шустро smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0657 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.