Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Infernet
0 / 0 / 0
Регистрация: 12.01.2016
Сообщений: 17
Завершенные тесты: 2
#1

В коде возникли ошибки при переходе с Visual studio 2013 на Visual studio 2017

29.07.2017, 18:48. Просмотров 965. Ответов 3
Метки нет (Все метки)

Добрый день, решил попробовать поменять свою 2013 студию на 2017 и заметил такую проблему, при открытии проектов 13 года и даже копирования кода из 13 в 17 возникает огромный ряд ошибок, которых в 13 версии не было, скрины прилагаю, помогите разобраться что я не так сделал
ClientData.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
28
#ifndef CLIENTDATA_H
#define CLIENTDATA_H
#include <string.h>
class ClientData {
public:
    ClientData(int = 0, string = "", string = "", double = 0.0);
    ~ClientData();
 
    string getLastName()const;
    void setLastName(const string&);
 
    string getFirstName()const;
    void setFirstName(const string&);
 
    int getAccountNumber()const;
    void setAccountNumber(const int);
 
    double getBalance()const;
    void setBalance(const double);
 
private:
    char firstName[10];
    char lastName[15];
    int accountNumber;
    double balance;
 
};
#endif

ClientData.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
#include <iostream>
#include <iomanip>
#include <string>
#include "ClientData.h"
using namespace std;
 
 
ClientData::ClientData(int accountNumberValue, string lastNameValue, string firstNameValue, double balanceValue)
{
    setAccountNumber(accountNumberValue);
    setBalance(balanceValue);
    setFirstName(firstNameValue);
    setLastName(lastNameValue);
}
ClientData::~ClientData()
{
    cout << "Destructor object ClientData has call\n";
}
 
string ClientData::getLastName()const {
    return lastName;
}
void ClientData::setLastName(const string &lastNameString) {
    const char *lastNameValue = lastNameString.data();
    int lenght = (lastNameString.size()<15 ? lastNameString.size() : 14);
    strncpy(lastName, lastNameValue, lenght);
    lastName[lenght] = '\0';
}
 
string ClientData::getFirstName()const {
    return firstName;
}
void ClientData::setFirstName(const string &firstNameString) {
    const char *firstNameValue = firstNameString.data();
    int lenght = (firstNameString.size()<10 ? firstNameString.size() : 9);
    strncpy(firstName, firstNameValue, lenght);
    firstName[lenght] = '\0';
}
 
int ClientData::getAccountNumber()const {
    return accountNumber;
}
void ClientData::setAccountNumber(const int accountNumberValue) {
    accountNumber = accountNumberValue;
}
 
double ClientData::getBalance()const {
    return balance;
}
void ClientData::setBalance(const double balanceValue) {
    balance = balanceValue;
}
main.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
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdlib>
#include "ClientData.h"
 
using namespace std;
 
void createEmpyClientData(ofstream&);
 
int main() {
    setlocale(LC_ALL, "Russian");
    ofstream outCredit("credit.dat", ios::binary);
    ClientData bankClient;
    createEmpyClientData(outCredit, bankClient);
 
 
 
 
 
    return 1;
}
 
void createEmpyClientData(ofstream& outCredit, ClientData& bankClient) {
    if (!outCredit) {
        cerr << "File could not be opened." << endl;
        exit(1);
    }
 
    for (int i = 0; i < 100; i++)
    {
        outCredit.write(reinterpret_cast<const char*>(&bankClient), sizeof(ClientData));
    }
}
Список ошибок
1>------ Сборка начата: проект: Bank client credit, Конфигурация: Release Win32 ------
1>main.cpp
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(6): error C2061: синтаксическая ошибка: идентификатор "string"
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(9): error C3646: getLastName: неизвестный спецификатор переопределения
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(9): error C2059: синтаксическая ошибка: (
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(9): error C2238: непредвиденные лексемы перед ";"
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(10): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(10): error C2143: синтаксическая ошибка: отсутствие "," перед "&"
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(12): error C3646: getFirstName: неизвестный спецификатор переопределения
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(12): error C2059: синтаксическая ошибка: (
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(12): error C2238: непредвиденные лексемы перед ";"
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(13): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(13): error C2143: синтаксическая ошибка: отсутствие "," перед "&"
1>main.cpp(15): error C2660: createEmpyClientData: функция не принимает 2 аргументов
1>ClientData.cpp
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(6): error C2061: синтаксическая ошибка: идентификатор "string"
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(9): error C3646: getLastName: неизвестный спецификатор переопределения
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(9): error C2059: синтаксическая ошибка: (
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(9): error C2238: непредвиденные лексемы перед ";"
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(10): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(10): error C2143: синтаксическая ошибка: отсутствие "," перед "&"
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(12): error C3646: getFirstName: неизвестный спецификатор переопределения
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(12): error C2059: синтаксическая ошибка: (
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(12): error C2238: непредвиденные лексемы перед ";"
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(13): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(13): error C2143: синтаксическая ошибка: отсутствие "," перед "&"
1>ClientData.cpp(9): error C2511: ClientData::ClientData(int,std::string,std::string,double): перегруженная функция-член не найдена в "ClientData"
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(4): note: см. объявление "ClientData"
1>ClientData.cpp(10): error C2352: ClientData::setAccountNumber: недопустимый вызов нестатической функции-члена
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(16): note: см. объявление "ClientData::setAccountNumber"
1>ClientData.cpp(11): error C2352: ClientData::setBalance: недопустимый вызов нестатической функции-члена
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(19): note: см. объявление "ClientData::setBalance"
1>ClientData.cpp(12): error C2664: "void ClientData::setFirstName(const int)": невозможно преобразовать аргумент 1 из "std::string" в "const int"
1>ClientData.cpp(12): note: Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен
1>ClientData.cpp(13): error C2664: "void ClientData::setLastName(const int)": невозможно преобразовать аргумент 1 из "std::string" в "const int"
1>ClientData.cpp(13): note: Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен
1>ClientData.cpp(20): error C2039: getLastName: не является членом "ClientData"
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(4): note: см. объявление "ClientData"
1>ClientData.cpp(20): error C2270: getLastName: модификаторы недопустимы для функций, не являющихся членами
1>ClientData.cpp(21): error C2065: lastName: необъявленный идентификатор
1>ClientData.cpp(23): error C2511: void ClientData::setLastName(const std::string &): перегруженная функция-член не найдена в "ClientData"
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(4): note: см. объявление "ClientData"
1>ClientData.cpp(26): error C2597: недопустимая ссылка на нестатический член "ClientData::lastName"
1>ClientData.cpp(27): error C2597: недопустимая ссылка на нестатический член "ClientData::lastName"
1>ClientData.cpp(27): error C3867: "ClientData::lastName": нестандартный синтаксис; используйте "&", чтобы создать указатель на член
1>ClientData.cpp(27): error C2109: для индекса требуется массив или указатель
1>ClientData.cpp(30): error C2039: getFirstName: не является членом "ClientData"
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(4): note: см. объявление "ClientData"
1>ClientData.cpp(30): error C2270: getFirstName: модификаторы недопустимы для функций, не являющихся членами
1>ClientData.cpp(31): error C2065: firstName: необъявленный идентификатор
1>ClientData.cpp(33): error C2511: void ClientData::setFirstName(const std::string &): перегруженная функция-член не найдена в "ClientData"
1>e:\general\yandexdisk\программирование\c++\project_c++\bank client credit\bank client credit\ClientData.h(4): note: см. объявление "ClientData"
1>ClientData.cpp(36): error C2597: недопустимая ссылка на нестатический член "ClientData::firstName"
1>ClientData.cpp(37): error C2597: недопустимая ссылка на нестатический член "ClientData::firstName"
1>ClientData.cpp(37): error C3867: "ClientData::firstName": нестандартный синтаксис; используйте "&", чтобы создать указатель на член
1>ClientData.cpp(37): error C2109: для индекса требуется массив или указатель
1>Сборка проекта "Bank client credit.vcxproj" завершена с ошибкой.
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
Миниатюры
В коде возникли ошибки при переходе с Visual studio 2013 на Visual studio 2017  
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2017, 18:48
Ответы с готовыми решениями:

Ошибки с Шаблонами в Visual Studio 2013
Доброго времени суток, что означают следующие ошибки? и как их можно исправить?...

Ошибка при запуске Box2d Visual Studio 2013
Добрый день! Подскажите. Пытаюсь запустить Box2d. Суть проблемы в следующем....

Работа с сокетами, ошибка при компиляции в Visual Studio 2013
Помогите пожалуйста в чем ошибка? // Server_new_chat.cpp : Defines the entry...

MS Visual Studio 2013 Express при компиляции программа открывается и сразу закрывается
Вот код: #include &lt;iostream&gt; int main() { std::cout &lt;&lt; &quot;Hello&quot; &lt;&lt; ;...

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

3
dawn artist
Заблокирован
29.07.2017, 18:50 #2
Лучший ответ Сообщение было отмечено Infernet как решение

Решение

Цитата Сообщение от Infernet Посмотреть сообщение
C++
1
2
3
4
5
6
#ifndef CLIENTDATA_H
#define CLIENTDATA_H
#include <string.h>
class ClientData {
public:
    ClientData(int = 0, string = "", string = "", double = 0.0);
А что такое string?
1
Infernet
0 / 0 / 0
Регистрация: 12.01.2016
Сообщений: 17
Завершенные тесты: 2
29.07.2017, 19:00  [ТС] #3
String это шаблонный строковый класс, от стандартной библиотеки c++, по книге изучаю и там он используется активно взамен char*
http://cppstudio.com/post/6110/
0
dawn artist
Заблокирован
29.07.2017, 19:01 #4
Infernet, отлично.

Теперь сравни код по ссылке со своим.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2017, 19:01

Setlocale в visual studio 2017
Вчера пришлось перебить винду и с ней же переустановил visual studio, скачалась...

Отладка visual studio 2017
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int...

SFML и Visual Studio 2017
Ребят, здравствуйте, не знаю ли можно здесь такое просить. Но может кто-нибудь...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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