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

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

Войти
Регистрация
Восстановить пароль
 
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
#1

Помогите найти ошибку при копировании массива - C++

11.04.2014, 00:10. Просмотров 1002. Ответов 3
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
void SendData(vector <int> Addresses, vector <byte> Data){
            
            if(Running && Client.connected && (Addresses.size() > 0) && (Data.size() > 0)){
                byte tmp[8 + Addresses.size() * sizeof(int) + Data.size()];
                memcpy((byte)Addresses.size(), tmp, sizeof(int));
                
            }
тип byte - unsigned char

Ошибка
NMClient.cpp: In member function ‘void NMClient::SendData(std::vector<int>, std::vector<unsigned char>)’:
NMClient.cpp:72:39: error: invalid conversion from ‘std::vector<int>::size_type {aka long unsigned int}’ to ‘void*’ [-fpermissive]
memcpy(Addresses.size(), tmp, sizeof(int));
^
In file included from TCPClient.cpp:6:0,
from NMClient.cpp:9:
/usr/include/string.h:42:14: error: initializing argument 1 of ‘void* memcpy(void*, const void*, size_t)’ [-fpermissive]
extern void *memcpy (void *__restrict __dest, const void *__restrict __src,
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2014, 00:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Помогите найти ошибку при копировании массива (C++):

Помогите найти ошибку при копировании вектора - C++
vector&lt;byte&gt; tmp(8 + Addresses.size() * sizeof(int) + Data.size()); tmp.push_back(Data.data()); Data - vector &lt;byte&gt; byte - unsigned...

Помогите найти ошибку при поиске отрицательного элемента массива - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void SetRussianLocale() { setlocale(LC_ALL, &quot;Russian&quot;); } int...

Помогите найти ошибку в программе сортировки массива - C++
Помогите с++ срочно! не сортирует массив! // ConsoleApplication18.cpp: определяет точку входа для консольного приложения. // ...

Помогите найти ошибку при заполнении вектора - C++
Допустил ошибку при заполнении вектора. #include&lt;iostream&gt; #include&lt;cstring&gt; #include&lt;vector&gt; #include&lt;iterator&gt; using namespace...

Помогите найти ошибку при работе с вектором - C++
// простой словарь список упорядоченных слов #include &quot;std_lib_facilities.h&quot; int main() { vector&lt;string&gt; words; string...

Помогите найти ошибку при множественном наследовании - C++
Помогите разобраться в наследовании Прилагаю код #include &lt;iostream&gt; using namespace std;

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
11.04.2014, 00:38 #2
Неправильно memcpy используете, чего непонятно то? Я хз, что там должно было быть (какая цель), но нечто типа
C++
1
memcpy(tmp, Addresses.data(), sizeof(int)*Addresses.size());
C++
1
memcpy(куда, откуда, сколько байт)
0
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
11.04.2014, 10:48  [ТС] #3
Да спасибо..скомпилилось без ошибок

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
10
11
    void SendData(vector <int> Addresses, vector <byte> Data){
            
            if(Running && Client.connected && (Addresses.size() > 0) && (Data.size() > 0)){
                byte tmp[8 + Addresses.size() * sizeof(int) + Data.size()];
                memcpy(tmp, Addresses.size(), sizeof(int)*Addresses.size());
                if (Running && Client.connected){
 
                }
                
            }
        }
такая ошибка
artem@artem-VirtualBox ~/Рабочий стол $ g++ -o NMClient NMClient.cpp
NMClient.cpp: In member function ‘void NMClient::SendData(std::vector<int>, std::vector<unsigned char>)’:
NMClient.cpp:78:75: error: invalid conversion from ‘std::vector<int>::size_type {aka long unsigned int}’ to ‘const void*’ [-fpermissive]
In file included from TCPClient.cpp:6:0,
from NMClient.cpp:9:
/usr/include/string.h:42:14: error: initializing argument 2 of ‘void* memcpy(void*, const void*, size_t)’ [-fpermissive]

если .data() то норм..а мне нужен размер вектора.не пойму почему нельзя скопировать размер в массив
0
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
11.04.2014, 17:26 #4
Какой еще размер? data() - это то массив, что хранится в векторе. Что значит 'скопировать размер в массив'?
C++
1
tmp[0] = Addresses.size();
Вот что называется скопировать (то бишь - поместить) размер в массив.
А память выделяется ну капец как странно, и что там должно быть - вообще не понятно.
C++
1
[8 + Addresses.size() * sizeof(int) + Data.size()]
И вообще - это статический массив, и так задавать его размер нельзя, только константой (как он такое скомпилировал - хз). Используйте new.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2014, 17:26
Привет! Вот еще темы с ответами:

Помогите найти ошибку при вычислении определителя матрицы - C++
Есть задача: Тим разрабатывает модули для QA-системы iNdium-Beta, позволяющей выполнять различные математические расчеты. Тим хочет...

Помогите найти ошибку в коде при работе с указателями - C++
Блин, я когда нибудь пойму эти указатели!!???? Подскажите где ошибся? #include&lt;iostream&gt; using namespace std; int foo(int&amp;num); ...

Помогите найти ошибку в коде(цикл for проходит не по всем элементам массива) - C++
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &lt;clocale&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; using namespace std; int...

Помогите найти ошибку с деструктором при создание класса Матрица - C++
Возникла проблема с деструктором, во время выполнения. #include&lt;iomanip&gt; #include&lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;ctime&gt; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.04.2014, 17:26
Ответ Создать тему
Опции темы

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