- Forum
- Beginners
- Only constructors take member intializer
Only constructors take member intializers
I’m working on a code for my Computer Science class and in this project we have to make a knight jousting game. But in the game we have to have two separate classes one for the knight and the other for the weapon. I have to use my weapon class in my knight class though and things just get really weird so I’ll post my code and the error I keep getting exactly from the compiler because I’m confused on what to do.
Weapon.h
|
|
Knight.h
|
|
Knight.cpp
|
|
p02.cpp //contains main
|
|
and the error I keep on getting is this
$ g++ p02.cpp knight.cpp
knight.cpp: In member function ‘void Knight::setKnightStats(std::string, int, std::string, int, int)’:
knight.cpp:9:3: error: only constructors take member initializers
: wield(type, HitChance, StaminaRequired)
Last edited on
wield is an instance of Weapon class. The weapon class has only the default constructor (no arguments). You need to define a constructor that takes a string and two ints
So make a weapon.cpp and define my constructor in there? kind of like this
|
|
weaponStats
is not a constructor, a constructor has the same name as the class..
u need to make a constructor for weapon and another one for Knight then move the initializer there :
|
|
Constructors are much better than member functions that «sets» or «initializes» members like setKnightStats()
Last edited on
Topic archived. No new replies allowed.
Hornet89 6 / 3 / 3 Регистрация: 02.03.2021 Сообщений: 27 |
||||||||
1 |
||||||||
Вывести таблицу значений функции и количество положительных и отрицательных значений04.03.2021, 06:05. Показов 2123. Ответов 8 Метки нет (Все метки)
Как решить ошибки в коде?
В коде присутствуют ошибки:
Также я не знаю, как вывести значения x и y в два столбца. Пожалуйста, помогите мне с этим заданием. Миниатюры
__________________
0 |
263 / 182 / 87 Регистрация: 03.05.2020 Сообщений: 790 |
|
04.03.2021, 06:20 |
2 |
int main(): { убрать
0 |
6 / 3 / 3 Регистрация: 02.03.2021 Сообщений: 27 |
|
04.03.2021, 06:29 [ТС] |
3 |
Как вывести значения x и y в два столбца?
0 |
2438 / 1177 / 436 Регистрация: 08.11.2016 Сообщений: 3,251 |
|
04.03.2021, 09:24 |
4 |
Hornet89, выводить попарно по окончании каждой итерации цикла с переводом строки.
0 |
4259 / 2465 / 1334 Регистрация: 14.12.2018 Сообщений: 4,633 Записей в блоге: 1 |
|
04.03.2021, 10:01 |
5 |
int main(): { Убирайте двоеточие в этой команде.
0 |
zss Модератор 12641 / 10135 / 6102 Регистрация: 18.12.2011 Сообщений: 27,170 |
||||
04.03.2021, 10:15 |
6 |
|||
0 |
Volga_ 4259 / 2465 / 1334 Регистрация: 14.12.2018 Сообщений: 4,633 Записей в блоге: 1 |
||||
04.03.2021, 10:24 |
7 |
|||
Как вывести значения x и y в два столбца? Я предлагаю вам код:
0 |
Hornet89 6 / 3 / 3 Регистрация: 02.03.2021 Сообщений: 27 |
||||||||||||
04.03.2021, 10:30 [ТС] |
8 |
|||||||||||
Мне нужно сделать так, чтобы все значения обоих переменных находились друг под другом, как в самой обычной таблице. Код программы:
Вывод:
Вывод, который должен быть:
0 |
zss Модератор 12641 / 10135 / 6102 Регистрация: 18.12.2011 Сообщений: 27,170 |
||||||||
04.03.2021, 10:33 |
9 |
|||||||
Сообщение было отмечено Hornet89 как решение РешениеHornet89, что-то Вы игнорируете то, что Вам пишут. Можете просто
cout << x << » » << z << «n»; заменить на
а лучше так, как написал Volga_
2 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
04.03.2021, 10:33 |
9 |
Я купил исходный код плагина Ogre (Particle Universe), который (или должен был быть) написан на C++, независимом от платформы. Он поставляется с решением Visual Studio, которое прекрасно компилируется, но поскольку весь мой проект скомпилирован с помощью G++, я хочу скомпилировать эту библиотеку и с помощью G++. Но по какой-то причине объявление шаблона выдает ошибку в G++. Вот фрагмент кода.
typedef Ogre::Any Any;
template <typename ValueType> ValueType* any_cast(Any* operand) : public any_cast(operand){};
Может ли какой-нибудь гуру С++ сказать мне, почему появляется эта ошибка? (может быть другой синтаксис?)
include/ParticleUniverseAny.h: In function 'ValueType*
ParticleUniverse::any_cast(ParticleUniverse::Any*)':
include/ParticleUniverseAny.h:21:68: error: only constructors take member initializers
include/ParticleUniverseAny.h:21:68: error: expected identifier before 'public'
include/ParticleUniverseAny.h:21:68: error: expected '{' before 'public'
include/ParticleUniverseAny.h: At global scope:
include/ParticleUniverseAny.h:21:68: error: expected unqualified-id before 'public'
Буду рад и благодарен за любую помощь!
РЕДАКТИРОВАТЬ: any_cast определен в OgreAny.h
friend ValueType * any_cast(Any *);
template<typename ValueType>
ValueType * any_cast(Any * operand)
{
return operand && operand->getType() == typeid(ValueType)
? &static_cast<Any::holder<ValueType> *>(operand->mContent)->held
: 0;
}
template<typename ValueType>
ValueType * any_cast(Any * operand)
{
return operand && operand->getType() == typeid(ValueType)
? &static_cast<Any::holder<ValueType> *>(operand->mContent)->held
: 0;
}
template<typename ValueType>
const ValueType * any_cast(const Any * operand)
{
return any_cast<ValueType>(const_cast<Any *>(operand));
}
template<typename ValueType>
ValueType any_cast(const Any & operand)
{
const ValueType * result = any_cast<ValueType>(&operand);
if(!result)
{
StringUtil::StrStreamType str;
str << "Bad cast from type '" << operand.getType().name() << "' "
<< "to '" << typeid(ValueType).name() << "'";
OGRE_EXCEPT(Exception::ERR_INVALIDPARAMS,
str.str(),
"Ogre::any_cast");
}
return *result;
}
Ошибка функции класса / члена
У меня есть этот фрагмент кода здесь:
class physics_vector
{
public:
double direction, magnitude;
int dir_mag(double dir, double mag) :direction(dir),
magnitude(dir) {return 0; };
};
int dir_mag(double dir, double mag)
{
cout << "Direction: " << dir << 'n';
cout << "Magnitude: " << mag << 'n';
return 0;
}
Всякий раз, когда я пытаюсь скомпилировать, я получаю ошибку,
13:39: error: only constructors take member initializers
Любая помощь пожалуйста?
21 фев. 2014, в 06:27
Поделиться
Источник
Эта функция:
int dir_mag(double dir, double mag) :direction(dir), magnitude(dir)
{return 0; };
использует список инициализаторов (:direction(dir), magnitude(dir)
) и допускает только конструкторы. Если бы вы планировали сделать это конструктором, ваш класс должен выглядеть следующим образом:
class physics_vector
{
public:
double direction, magnitude;
physics_vector(double dir, double mag) :direction(dir),
magnitude(dir) {};
};
И это скомпилируется. Обратите внимание, что вам не разрешено возвращать значение из конструктора, и у них нет возвращаемых типов.
Peter R
21 фев. 2014, в 06:29
Поделиться
Вы не можете использовать список инициализаций в функциях. Недействительная операция в С++. Список инициализаторов можно использовать только с конструктором.
Компилятор дает очень ясную ошибку.
HadeS
21 фев. 2014, в 08:02
Поделиться
Ещё вопросы
- 0как отключить нг-повтор с помощью кнопки angularjs?
- 1Как создать интерактивную кнопку с ShapeDrawable?
- 1Gulp: Uglifying Bootstrap 4 js-файлов
- 1Виджет приложения со списком
- 0Использование angular.js для установки выбранного из динамического значения в файлах JSON
- 0не могу добавить в базу данных MySQL
- 0$ scope не обновляется
- 0угловой $ scope. $ on не работает
- 1Переключение между 3 функциями по щелчку мыши
- 1Списки в списках
- 1Автоэнкодер работает для MNIST, но сбой для изображений с большим размером
- 0Модификация заголовков PHP
- 1Как я могу заглушить хапи обработчик?
- 0Ошибка параметра / аргумента карты (решение найдено)
- 1Приложение не появляется в Маркете для некоторых устройств
- 1Почему я постоянно получаю исключения ActivityNotFound?
- 1Как справиться с ошибкой возвышения в pywinauto или pyautoit?
- 1Почему оценщик TensorFlow не может сделать это простое предсказание линейной регрессии
- 0динамические данные ng-repeat не отображаются, пока доступны теги
- 0Vimeo Advanced API, удаление приложений
- 0Расширение Magento Checkout — перейти к следующему шагу в Checkout
- 1Добавьте строку над определенным тегом XML и одну строку ниже конечного тега XML
- 0Как поместить прямоугольник в середину
- 0как читать из большого текстового файла в массив с ++
- 1MVC 5 Не удается неявно преобразовать тип ‘System.Linq.IQueryable в bool?
- 0Получить QImage или QPixmap из QStandardItemModel — TableView
- 1InvalidCastException Ошибка, вызванная строкой БД?
- 0Проверка Jquery на содержание div
- 0Что происходит, если функция нового обработчика не написана должным образом или не может освободить больше памяти в c ++
- 1Как заставить самсунг момент соединиться с adb
- 1Vue.js: передача внешней переменной компоненту через инициализацию?
- 0Двухстороннее крепление для углового ремня
- 0Изменение цвета маршрута маршрута карты Google с перемещением навигатора от одной точки к другой.
- 0C ++ Статический массив
- 0DataStudio Mysql Connection — пользователь отклонен
- 0Однократная инициализация переменной в cocos2d-x
- 0Mean.js — Использование URL в качестве параметра Mongoose
- 0Как повернуть фоновое изображение с помощью CSS и с эффектом затухания?
- 0Yeoman — Grunt часы не смотрят все файлы приложения
- 0Это безопасный способ реализации обработки ошибок?
- 0n-дитя детей каждого другого дива
- 0Язык браузера и кнопка Facebook
- 0Ошибка C ++ STATUS_ACCESS_VIOLATION
- 1Как настроить страницу по умолчанию для открытия папки, когда пользователь вводит URL-адрес папки?
- 0Mysql enum не ищет запись без значения цитаты
- 1Правильный способ записи данных JSON, возвращаемых из запроса SPARQL в Python
- 1Использование ActionProvider файла — Eclipse CNF
- 1Вход в БД Oracle
- 1ArrayIndex в XMLAttribute