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

Функция не принимает значение - C++

Восстановить пароль Регистрация
 
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
11.08.2012, 18:09     Функция не принимает значение #1
Вот код:

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
#include "stdafx.h"
#include "CRoute.h"
#include <iostream>
#include <string.h>
#include <windows.h>
using namespace std;
 
int _tmain()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    cout << "Вывод информации о маршрутах:\n";
    CRoute DefConst;  
    cout << "\nID маршрута: " << DefConst.getRouID();
    cout << "\nНазвание маршрута: " << DefConst.getRoute_N();
    cout << "\nСтоимость маршрута: " << DefConst.getPer();
    cout << "\nСрок пребывания: " << DefConst.getCos_t();
 
    cout << "\n";
 
    CRoute ConstPar(35, "ростов-запорожье", 1, 600);  
    cout << "\nID маршрута: " << ConstPar.getRouID();
    cout << "\nНазвание маршрута: " << ConstPar.getRoute_N();
    cout << "\nСтоимость маршрута: " << ConstPar.getPer();
    cout << "\nСрок пребывания: " << ConstPar.getCos_t();
 
    cout << "\n";
 
    CRoute ConstCop(DefConst);  
    cout << "\nID маршрута: " << ConstCop.getRouID();
    cout << "\nНазвание маршрута: " << ConstCop.getRoute_N();
    cout << "\nСтоимость маршрута: " << ConstCop.getPer();
    cout << "\nСрок пребывания: " << ConstCop.getCos_t();
 
    cout << "\n\n"; 
 
}
теперь файл .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
#include <string.h>
 
class CRoute
{
    private:
        int RouteID,
            Period,
            Cost;
 
        char *RouteName;
 
    public:
        CRoute();           //конструктор по умолчанию
        CRoute(const CRoute &g);            //конструктор копирования
        CRoute(int _RouteID, char *_RouteName, int _Period, int _Cost); //конструктор с параметрами
        ~CRoute();      //деструктор
 
        void CRoute::setRouID(int _RouteID);
        int CRoute::getRouID(void);
        void CRoute::setRoute_N(char *_RouteName);
        char *CRoute::getRoute_N(void);
        void CRoute::setPer(int _Period);
        int CRoute::getPer(void);
        void CRoute::setCos_t(int _Cost);
        int CRoute::getCos_t(void);
 
};
и с расширением cpp

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
67
68
69
70
71
72
73
74
75
#include "stdafx.h"
#include "CRoute.h"
 
 
 
void CRoute::setRouID(int _RouteID)
{
    RouteID = _RouteID;
}
int CRoute::getRouID(void)
{
    return RouteID;
}
 
void CRoute::setRoute_N(char *_RouteName)
{
    int n = strlen(_RouteName) + 1;
    RouteName = new char [n];
    strncpy_s(RouteName, _RouteName, n);
}
char *CRoute::getRoute_N(void)
{
    return RouteName;
}
 
void CRoute::setPer(int _Period)
{
    Period = _Period;
}
int CRoute::getPer(void)
{
    return Period;
}
 
void CRoute::setCos_t(int _Cost)
{
    Cost = _Cost;
}
int CRoute::getCos_t(void)
{
    return Cost;
}
 
CRoute::CRoute()            
{
    RouteID = 22;
    RouteName = new char[strlen("ростов-москва")+1];
    strncpy_s(RouteName, "ростов-москва");
    Period = 2;
    Cost = 2000;
}
 
CRoute::CRoute(const CRoute &g)         
{
    RouteID = g.RouteID;
    RouteName = new char[strlen(g.RouteName)+1];
    strcpy_s(RouteName, g.RouteName);
    Period = g.Period;
    Cost = g.Cost;
}
 
CRoute::CRoute(int _RouteID, char *_RouteName, int _Period, int _Cost)  
{
    RouteID = _RouteID; 
    int n = strlen(_RouteName) + 1;
    RouteName = new char [n];
    strncpy_s(RouteName, _RouteName, n);
    Period = _Period;
    Cost = _Cost;
}
 
CRoute::~CRoute()
{
    delete []RouteName;
}
вот что выдает:
1>c:\users\ваня\desktop\вариант 6\sub44\croute.cpp(19) : error C2660: strncpy_s: функция не принимает 3 аргументов
1>c:\users\ваня\desktop\вариант 6\sub44\croute.cpp(48) : error C2660: strncpy_s: функция не принимает 2 аргументов
1>c:\users\ваня\desktop\вариант 6\sub44\croute.cpp(57) : error C2660: strcpy_s: функция не принимает 2 аргументов
1>c:\users\ваня\desktop\вариант 6\sub44\croute.cpp(67) : error C2660: strncpy_s: функция не принимает 3 аргументов

заранее благодарю за помощь..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2012, 18:09     Функция не принимает значение
Посмотрите здесь:

Функция не принимает параметры C++
C++ Функция не принимает 1 аргументов
C++ Функция не принимает аргументы
Функция не принимает параметр C++
Функция не принимает 0 аргументов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
11.08.2012, 18:16     Функция не принимает значение #2
А в чём проблема? strncpy_s принимает четыре аргумента: приёмник, его размер, источник, количество копируемых байт (копирует до израсходования приёмника или источника); strcpy_s тоже принимает три: приёмник, размер приёмника, источник (копирует до израсходования приёмника или встречи нулевого байта в источнике). За деталями — в MSDN.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
11.08.2012, 18:23  [ТС]     Функция не принимает значение #3
а почему тогда работало все до использования динамической памяти?
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
11.08.2012, 19:32     Функция не принимает значение #4
Цитата Сообщение от yoghurt92 Посмотреть сообщение
а почему тогда работало все до использования динамической памяти?
strcpy_s имеет две перегрузки:
1) errno_t strcpy_s(char* _Dst,rsize_t _SizeInBytes, const char* _Src) - выбирается если _Dst - указатель на выделенный участок.
2) errno_t strcpy_s<_Size>(char(&_Dest)[_Size], const char* _Source) - выбирается если _Dest - указатель на строку фиксированного размера
Пример:
C++
1
2
3
4
char arr[200];
strcpy_s(arr,"Example of second overload"); // это будет второй вариант
char* allocarr=new char[200];
strcpy_s(allocarr,200,"Example of first overload"); // второй вариант
Yandex
Объявления
11.08.2012, 19:32     Функция не принимает значение
Ответ Создать тему
Опции темы

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