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

error C2864 - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Helldrg
54 / 54 / 1
Регистрация: 10.01.2011
Сообщений: 1,080
31.12.2011, 20:50     error C2864 #1
Здравствуйте! Как исправить ошибку:
error C2864: 'cmdMenu::fileName_' : only static const integral data members can be initialized within a class
в коде:

C++
1
static const char fileName_[10] = "data.dat";
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
31.12.2011, 20:55     error C2864 #2
Цитата Сообщение от Helldrg Посмотреть сообщение
fileName_[10]
А это для чего?

Добавлено через 2 минуты
http://liveworkspace.org/code/f9bbf4...5ef54feb511c0e

Добавлено через 12 секунд
C++
1
2
3
4
5
6
7
#include <iostream>
 
int main ()
{
   static const char str[] = "Hello world";
   std::cout << str << std::endl; 
}
Helldrg
54 / 54 / 1
Регистрация: 10.01.2011
Сообщений: 1,080
31.12.2011, 20:56  [ТС]     error C2864 #3
короче
там функции есть еще
C++
1
2
3
4
5
void insertData(char[20], char[30]);
    void deleteData(int);
template <class T> void replaceData(int, int, T);
 
    static const char fileName_[10] = "data.dat";
и в их реализации должна быть типа константы названия файла
ProNoooob
71 / 71 / 6
Регистрация: 14.10.2009
Сообщений: 121
31.12.2011, 20:57     error C2864 #4
Цитата Сообщение от Helldrg Посмотреть сообщение
error C2864: 'cmdMenu::fileName_' : only static const integral data members can be initialized within a class
В описании класса ты можешь давать начальные значение только статическим ЧИСЛОВЫМ константам(int).
Вынеси инициализацию в другое место кода.
Helldrg
54 / 54 / 1
Регистрация: 10.01.2011
Сообщений: 1,080
31.12.2011, 20:58  [ТС]     error C2864 #5
Цитата Сообщение от go Посмотреть сообщение
Код C++
1
2
3
4
5
6
7
#include <iostream>
int main ()
{
* *static const char str[] = "Hello world";
* *std::cout << str << std::endl;
}
ты че 0_o сама ошибка говорит о том что переменная находится в классе

Добавлено через 28 секунд
а текстовое не как что ли?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
31.12.2011, 21:14     error C2864 #6
Цитата Сообщение от Helldrg Посмотреть сообщение
ты че
Полный код пожалуйста выложите, иначе я не смогу подсказать, что делать...
Helldrg
54 / 54 / 1
Регистрация: 10.01.2011
Сообщений: 1,080
31.12.2011, 21:21  [ТС]     error C2864 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//cb.h
Class CBook
{
public:
void insertData(char[20], char[30]);
        void deleteData(int);
template <class T> void replaceData(int, int, T);
 
        static const char fileName_[10] = "data.dat";
 
};
 
//main.cpp
include "cb.h"
void Cbook::deleteData(int t)
{
   file f=fopen(fileName_,"r");
}
ну че то типа
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
31.12.2011, 21:27     error C2864 #8
Цитата Сообщение от Helldrg Посмотреть сообщение
Class CBook
C++
1
class CBook
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2011, 21:56     error C2864
Еще ссылки по теме:

C++ [C++ Error] Unit1.cpp(6): E2141 Declaration syntax error
[ilink32 Error] Error: Unresolved external 'zamena (int * *) ' referenced C++
C++ Error LNK1120, error LNK2019, error LNK2028, queue

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

Или воспользуйтесь поиском по форуму:
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
31.12.2011, 21:56     error C2864 #9
Вообще по C++11 всё хорошо.
А чтобы C++98 соответствовало, надо что-то типа
C++
1
2
3
        static const char fileName_[10];
};
template<> const char fileName_[10] = "data.dat";
Yandex
Объявления
31.12.2011, 21:56     error C2864
Ответ Создать тему
Опции темы

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