Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без изменения. Указания: номера k1 и k2 вводятся с клавиатуры. https://www.cyberforum.ru/ cpp-beginners/ thread216820.html C++ Определить, сколько делителей у вводимого числа, и вывести сами делители
определить сколько и каких делителей у вводимого числа
C++ Стандартная библиотека C++ и STL Вот нашел такие строки в книге Эккеля "Философия С++" Контейнеры и алгоритмы стандартной библиотеки С++ не редко путают с объектами библиотеки STL....//...между стандартной библиотекой С++ и библиотекой STL существует множество тонких различий. Таким образом, несмотря на популярность этого заблуждения, STL не является частью стандартной библиотеки С++. Путаница возникает довольно часто, потому... https://www.cyberforum.ru/ cpp-beginners/ thread216798.html C++ Программа объединения двух целочисленных массивов Очень жду помощи) составление и компиляция программ обработки строк и массивов с помощью пакета MASM32. 1. Написать программу объединения двух целочисленных массивов с использованием команды MOVSB. Необходимо учесть, что результирующий массив должен иметь размер, как минимум равный сумме размеров объединяемых массивов. 2. Удалить среднюю букву при нечетной длине строки и две средние буквы... https://www.cyberforum.ru/ cpp-beginners/ thread216792.html
Как использовать таймер C++
Здравствуйте, господа. Можно ли каким-либо образом использовать таймер в программе вообще? Увидел описание таймера, однако не нашёл timer.h. Мне необходимо, чтобы программа в том случае, если пользователь ничего не делает опр. промежуток времени в течение getch (), выдавала сообщение. Заранее благодарю за возможные ответы.
C++ количество элементов в массиве встречающихся 2 раза дан одномерный массив состоящий из N элементов. Выяснить количество элементов в массиве А встречающихся более 2-х раз. https://www.cyberforum.ru/ cpp-beginners/ thread216786.html
C++ Как вывести строки, содержащие "world" из файла? https://www.cyberforum.ru/ cpp-beginners/ thread216765.html
Дан файл, например example.txt. В нем записано примерно следующее wfwf world ofkefesf world hello44545 effefe345 befgge 333 fwfwf word WorlD 325 Нужно вывести только те строки в этом файле, которые содержат слово "world" без учета регистра.
C++ одномерный массив.
дан одномерный массив А состоящий из N числа элементов. Выяснить сколько элементов в массиве А встречающихся более 2-х раз?...помогите .
C++ Поиск локального минимума!!!Срочно! https://www.cyberforum.ru/ cpp-beginners/ thread216753.html
Помогите написать программу на с++ по следующей задаче : Найти локальный минимум в матрице. Буду очень благодарен!
C++ Файлы Работа осуществляется в файле. Во входном файле вводится число, а в выходном файле расчитывается его факториал. Прошу помочь. https://www.cyberforum.ru/ cpp-beginners/ thread216736.html
Подскажите насчёт random() C++
Люди добрые, подскажите, как можно сделать так, чтобы случайно выбиралось одно из заданных четырёх чисел? Если использовать random(num), то будет случайный выбор от 0 до num-1, а мне нужно по-другому. Например, даны переменные int x1=50,x2=250,y1=50,y2=200,N; мне нужно, чтобы переменной N присвоилось значение одной из четырёх переменных (x1 или x2 или y1 или y2) случайным образом.
C++ Подсчитать число точек,находящихся внутри круга Задача: подсчитать число точек,находящихся внутри круга радиусом R с центром в начале координат; кординаты точек заданы масивами X(80), Y(80);расстояние точки от начала координат определять в подпрограмме Плз помогите) https://www.cyberforum.ru/ cpp-beginners/ thread216720.html
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 5
0

Подскажите по классам в Visual Studio c++ - C++ - Ответ 1224995

21.12.2010, 17:49. Показов 1549. Ответов 7
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Я новичек(). Проблема такая: допустим есть код, в котором объявлен класс матриц (CMatrix) как шаблон (template <class T>), с методами инициализации, заполения рандомом и перегрузкой операторов. Все ок. Все работает:

template <class T>
class CMatrix
{
T **matr;

int m_in,
m_im;

public:
CMatrix(int, int);
~CMatrix();

void Init();
void InitRandom();

CMatrix<T> &operator + (CMatrix <T>&b);
CMatrix<T> &operator - (CMatrix <T>&b);
};

template <class T>
CMatrix<T>::CMatrix(int n, int m)
{
m_in = n;
m_im = m;
matr = NULL;
Init();
}

template <class T>
CMatrix<T>::~CMatrix()
{

}

template <class T>
void CMatrix<T>::Init()
{
if (matr == NULL) {
matr = new T *[m_in];
for ( int i = 0; i < m_in; i ++)
matr[i] = new T[m_im];
}
}


template <class T>
void CMatrix<T>::InitRandom()
{
srand(time(NULL));
for (int i = 0; i < m_in; i++)
for (int j = 0; j < m_im; j++)
*(*(matr+i)+ j)= rand() % 10;

}


template <class T>
CMatrix<T> &CMatrix<T>::operator + (CMatrix<T> &b)
{
CMatrix c(m_in, m_im);
for (int i = 0; i < m_in; i++)
for (int j = 0; j < m_im; j++)
c.matr[i][j] = this->matr[i][j] + b.matr[i][j];
return c;
}

template <class T>
CMatrix<T> &CMatrix<T>::operator - (CMatrix <T>&b)
{
CMatrix c(m_in, m_im);
for (int i = 0; i < m_in; i++)
for (int j = 0; j < m_im; j++)
c.matr[i][j] = this->matr[i][j] - b.matr[i][j];

return c;
}


int main()
{
CMatrix <int> A(5,5);
CMatrix <int> B(5,5);
CMatrix <int> C(5,5);
A.Init();
B.Init();
C.Init();
A.InitRandom();
B.InitRandom();
C.InitRandom();
C = A + B;
return 0;
}

Но если добавить в проекте класс с++ и переместить объявление класс в header (Matrix.h):

template <class T>
class CMatrix
{
T **matr;

int m_in,
m_im;

public:
CMatrix(int, int);
~CMatrix(void);


void Init();
void InitRandom();


CMatrix<T> &operator + (CMatrix <T>&b);
CMatrix<T> &operator - (CMatrix <T>&b);

};

А реализцию в cpp файл (Matrix.cpp):
template <class T>
CMatrix<T>::CMatrix(int n, int m)
{
m_in = n;
m_im = m;
matr = NULL;
Init();
}

template <class T>
CMatrix<T>::~CMatrix(void)
{

}

template <class T>
void CMatrix<T>::Init()
{
if (matr == NULL) {
matr = new T *[m_in];
for ( int i = 0; i < m_in; i ++)
matr[i] = new T[m_im];
}
}


template <class T>
void CMatrix<T>::InitRandom()
{
srand(time(NULL));
for (int i = 0; i < m_in; i++)
for (int j = 0; j < m_im; j++)
*(*(matr+i)+ j)= rand() % 10;
}


template <class T>
CMatrix<T> &CMatrix<T>::operator + (CMatrix<T> &b)
{
CMatrix c(m_in, m_im);
for (int i = 0; i < m_in; i++)
for (int j = 0; j < m_im; j++)
c.matr[i][j] = this->matr[i][j] + b.matr[i][j];
return c;
}

template <class T>
CMatrix<T> &CMatrix<T>::operator - (CMatrix <T>&b)
{
CMatrix c(m_in, m_im);
for (int i = 0; i < m_in; i++)
for (int j = 0; j < m_im; j++)
c.matr[i][j] = this->matr[i][j] - b.matr[i][j];

return c;
}

То в основной программе:
#include "Matrix.h"
int main()
{
CMatrix <int> A(5,5);
CMatrix <int> B(5,5);
CMatrix <int> C(5,5);
A.Init();
B.Init();
C.Init();
A.InitRandom();
B.InitRandom();
C.InitRandom();
C = A + B;
return 0;
}
не компилируется с ошибкой
error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall CMatrix<int>::~CMatrix<int>(void)" (??1?$CMatrix@H@@QAE@XZ) в функции _wmain
error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall CMatrix<int>::CMatrix<int>(int,int)" (??0?$CMatrix@H@@QAE@HH@Z) в функции _wmain
Ошибка с констуктором и деструктором (как я догадываюсь).
Если кто знает в чем проблема, подсакажите пжлста.
Пробовал пример с msdn шаблона (работает , если одним файлом) также раскидать в заголовочный файл и cpp, в основной программе создать экзепляр, такая же ошибка.

Вернуться к обсуждению:
Подскажите по классам в Visual Studio c++ C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2010, 17:49
Готовые ответы и решения:

Visual Studio перестал показывать дополнения к классам
Не знаю куда правильно задать вопрос, но программирую я на C++. Вопрос по Visual Studio. Сломалась...

Проблема с работой в Visual Studio, я новичок, подскажите)
Помогите пожалуйста с Visual studio у меня такая проблема я пишу программу она выдает в моем коде...

Ребяята подскажите, у меня вопро по Visual studio
Подскажите для Visual Studio 2010 нужно что то устанавливать? Библиотека там.... потому что уу меня...

Что лучше Visual Studio или Builder C++ подскажите?
Что лучше Visual Studio или Builder C++ подскажите?

7
21.12.2010, 17:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2010, 17:49
Помогаю со студенческими работами здесь

Замена Visual Studio 2015: подскажите, какие есть варианты
В общем, нужно скомпилировать проект который написан под VS2015. Скомпилить нужно в винде (32 и...

Люди подскажите какой Microsoft Visual Studio 2010 вы используете?
Значит проблема такая поставил Microsoft Visual Studio 2010 Express. Очень многие коды не работают....

В коде возникли ошибки при переходе с Visual studio 2013 на Visual studio 2017
Добрый день, решил попробовать поменять свою 2013 студию на 2017 и заметил такую проблему, при...

Имеются ли отличия в компиляторах у сред разработки Visual Studio 2006 и Visual Studio 2015 ?
скажите а где найти среду 2006 года? или можно использовать 2015 год?

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru