Вопросы с тегами [constructor]

16

голосов
4

ответ
887

Просмотры

Why can I not instantiate a class whose constructor is private in a friend class?

У меня есть два класса; Заработная плата, предназначенная для хранения информации и расчетов относительно заработной платы работника и работника, который имеет объект класса типа Зарплата и некоторые члены, как имя и адрес сотрудника ... То, что я хочу сделать, это предотвратить класс Зарплата от того, инстанцирован кроме класса Employee. Поэтому я объявил строитель заработной платы частного и сделал Работник друг Зарплата. Но я получаю ошибки: класс Employee; класс Зарплата {общественности: частная: Зарплата (): revenue_ {}, cost_ {} {} Зарплатный (интермедиат х, у ИНТ): revenue_ {х}, cost_ {у} {} ИНТ revenue_, cost_; друг класс Employee; }; класс Employee {общественности: станд :: строка name_; Зарплата сала; }; INT основных () {Сотрудник EMP {}; // "Зарплата :: Зарплата ()" недоступен} Проблема уходит, если я вперед объявить основной: INT основной (интермедиат, символ * []); И сделать главный друг класса Зарплата как и в Оклад: класс Зарплата {// ... друг Int основной (INT ARGC, символ * ARGV []); }; Теперь программа компилируется правильно! *** Еще одна вещи, в основном, если я объявить объект так: Employee ую; // ОК эми Сотрудник {}; // ошибка?
Syfu_H
1

голосов
2

ответ
35

Просмотры

Using alternative super class constructor in child class instantiation

У меня есть базовый класс с двумя конструкторами, и дочерний класс, который имеет один конструктор. Можно ли создать экземпляр класса ребенка с помощью второго конструктора базового класса? Пример код: абстрактный класс RuleCondition (правило: Правило, поле: String, равный: Boolean, перевернутый: Boolean) {// альтернативный конструктор с RuleValue вместо статического значения Comparation четкости (это правило: Правило, поля: String, исй: RuleValue, равна: Boolean = ложь, инвертируется: Boolean = ложь) = ??? } Класс RuleConditionAbove (правило: Правило, поле: String, comparationValue: Длинные, равно: Boolean = ложь, перевернутый: Boolean = ложь) продолжается RuleCondition (правило, поле, равное, перевернутый) {// ...} Теперь я могу делать это: вал myAboveCondition = новый RuleConditionAbove (правило, "ли", 10, правда, ложь), но я не могу это сделать: Вэл myAboveCondition = новый RuleConditionAbove (правило, "л", RuleValue (...), правда, ложь), так как альтернативный конструктор RuleCondition базового класса не видно. Это будет видно, как только я добавить это дочерний класс: Защита этого (правило: Правило, поля: String, реф: RuleValue, равный: Boolean = ложь, перевернутый: Boolean = False) = это (правило, поле, хол, равным , перевернутый) будет ли это единственный / обычный способ решения этой проблемы, или есть что-то умное, который включает в себя меньше копии & прошлом код? (Так как у меня есть тонны дочерних классов одного и того же рисунка) [править] Для того, чтобы уточнить, второй конструктор будет таким же в каждом дочернем классе, таким образом, я хотел бы, чтобы он реализован только один раз в базовом классе. Однако до сих пор приходится ставить другой конструктор в каждом дочернем классе победит эту цель какой-то образом, и, таким образом, я не имел бы два конструктора базовый класс, а скорее только во всех дочерних классах. истина, ложь), так как альтернативный конструктор RuleCondition базового класса не виден. Это будет видно, как только я добавить это дочерний класс: Защита этого (правило: Правило, поля: String, реф: RuleValue, равный: Boolean = ложь, перевернутый: Boolean = False) = это (правило, поле, хол, равным , перевернутый) будет ли это единственный / обычный способ решения этой проблемы, или есть что-то умное, который включает в себя меньше копии & прошлом код? (Так как у меня есть тонны дочерних классов одного и того же рисунка) [править] Для того, чтобы уточнить, второй конструктор будет таким же в каждом дочернем классе, таким образом, я хотел бы, чтобы он реализован только один раз в базовом классе. Однако до сих пор приходится ставить другой конструктор в каждом дочернем классе победит эту цель какой-то образом, и, таким образом, я не имел бы два конструктора базовый класс, а скорее только во всех дочерних классах. истина, ложь), так как альтернативный конструктор RuleCondition базового класса не виден. Это будет видно, как только я добавить это дочерний класс: Защита этого (правило: Правило, поля: String, реф: RuleValue, равный: Boolean = ложь, перевернутый: Boolean = False) = это (правило, поле, хол, равным , перевернутый) будет ли это единственный / обычный способ решения этой проблемы, или есть что-то умное, который включает в себя меньше копии & прошлом код? (Так как у меня есть тонны дочерних классов одного и того же рисунка) [править] Для того, чтобы уточнить, второй конструктор будет таким же в каждом дочернем классе, таким образом, я хотел бы, чтобы он реализован только один раз в базовом классе. Однако до сих пор приходится ставить другой конструктор в каждом дочернем классе победит эту цель какой-то образом, и, таким образом, я не имел бы два конструктора базовый класс, а скорее только во всех дочерних классах. ложь), так как альтернативный конструктор RuleCondition базового класса не видно. Это будет видно, как только я добавить это дочерний класс: Защита этого (правило: Правило, поля: String, реф: RuleValue, равный: Boolean = ложь, перевернутый: Boolean = False) = это (правило, поле, хол, равным , перевернутый) будет ли это единственный / обычный способ решения этой проблемы, или есть что-то умное, который включает в себя меньше копии & прошлом код? (Так как у меня есть тонны дочерних классов одного и того же рисунка) [править] Для того, чтобы уточнить, второй конструктор будет таким же в каждом дочернем классе, таким образом, я хотел бы, чтобы он реализован только один раз в базовом классе. Однако до сих пор приходится ставить другой конструктор в каждом дочернем классе победит эту цель какой-то образом, и, таким образом, я не имел бы два конструктора базовый класс, а скорее только во всех дочерних классах. ложь), так как альтернативный конструктор RuleCondition базового класса не видно. Это будет видно, как только я добавить это дочерний класс: Защита этого (правило: Правило, поля: String, реф: RuleValue, равный: Boolean = ложь, перевернутый: Boolean = False) = это (правило, поле, хол, равным , перевернутый) будет ли это единственный / обычный способ решения этой проблемы, или есть что-то умное, который включает в себя меньше копии & прошлом код? (Так как у меня есть тонны дочерних классов одного и того же рисунка) [править] Для того, чтобы уточнить, второй конструктор будет таким же в каждом дочернем классе, таким образом, я хотел бы, чтобы он реализован только один раз в базовом классе. Однако до сих пор приходится ставить другой конструктор в каждом дочернем классе победит эту цель какой-то образом, и, таким образом, я не имел бы два конструктора базовый класс, а скорее только во всех дочерних классах.
user826955
1

голосов
0

ответ
84

Просмотры

Define function independent of specific value constructor (templates?)

Is it possible to write a function for generic types (in this case applicatives) without making assumptions about the name of type constructors? I can write the following: f :: Maybe a -> Maybe a f (Just a) = (Just a) That one works on Maybes and only instances with the Just constructor. But say I had different types that have a value constructor that had the same name as the type constructor: data T a = T a instance Functor T where fmap f (T a) = T (f a) instance Applicative T where pure = T (T f) (T something) = fmap f (T something) data U a = U a instance Functor U where fmap f (U a) = U (f a) instance Applicative U where pure = U (U f) (U something) = fmap f (U something) In this case T and U are isomorphic, but maybe they also would have constructors that are special to either one in a real example... does not matter here. Now what if wanted a function that operates both on T and U... I could write the function two times, like so: gt :: T a -> T a gt (T x) = T x gu :: U a -> U a gu (U x) = U x Is there also a way to make a template for this function like this? g :: (Applicative f) => f a -> f a g (f x) = f x That will give me a syntax error for some reason, even though it has the same structure as gt and gu. If there is no way to do that then why not?
lo tolmencre
1

голосов
1

ответ
35

Просмотры

TypeError: myParser.MessageParser is not a constructor

I'm trying to write a custom parser for use with the serialport library. I've followed the example of the parsers provided with the library, but when I try to instantiate I get the captioned error. I'm stuck on this and can't find anything. I'm a JS beginner, so likely I'm missing something obvious. Code is being executed from the command line as: 'C:> Node speed.js'. In msgParser.js: const Buffer = require('safe-buffer').Buffer; const Transform = require('stream').Transform; module.exports = class MessageParser extends Transform { constructor() { //options = options || {}; super(); this.delimiter = 0xA4; this.msg = Buffer.alloc(0); this.bytesNeeded = 0; } _transform(chunk, encoding, callback) { //etc } _flush(cb) { this.push(this.msg); this.msg = Buffer.alloc(0); cb(); } }; In speed.js: /* jshint esversion: 6 */ /* jshint node: true */ 'use strict'; const config = require('./config.json'); const serial = require('serialport'); const myParser = require('./msgParser.js'); const msgParser = new myParser.MessageParser(); const monitor = new serial.parsers.Readline({ delimiter: '\r\n' }); var port = new serial(config.serialPort, { baudRate: config.baudRate, highwatermark: 1024 }); port.pipe(msgParser).pipe(monitor);
Rj99
1

голосов
1

ответ
59

Просмотры

Spring JUnit autowired пользовательский класс должен иметь сам конструктор?

Я новичок в Spring Framework. У меня вопрос при попытке написать интеграционный тест пружины. Я получил этот класс животных. @Configuration @ConfigurationProperties (префикс = "животное") общественный класс животные {частные кошки Cat; / * Общественное животное (кот кошка) {this.cat = кошка; } * / Общественного Cat getCat () {возвращение кота; } Общественного статический класс Cat {@value ( "$ {нога}") личное Струнный ногу; Строка getLeg общественности () {возвращение ноги; }}} И мой тест интеграции @RunWith (SpringRunner.class) @EnableConfigurationProperties @TestPropertySource ( "Путь к классам: ../ классы / CONF / animal.yml") @ContextConfiguration (классы = {Animal.class, Animal.Cat.class} ) общественного класса AnimalTest {@Autowired животных животных; @Test общественного недействительными testAnimal () {System.out.println ( "animal.cat.leg:" +. Animal.getCat () getLeg ()); Assert.assertEquals ( "четыре", animal.getCat () getLeg ().); }} А вот мой YAML содержимое файла животное: кошка: нога: четыре я получаю эту ошибку, которая весной рамки не удается правильно прочитать мое содержимое файла YAML. java.lang.NullPointerException: нуль на com.openet.tsb.AnimalTest.testAnimal (AnimalTest.java:41) Тест будет проходить после того, как я раскомментировать мой конструктор животных. Так что мой вопрос, конструктор нужен? Есть еще один способ, чтобы пропустить конструктор и autowired переменного согласовывает имя, чтобы имя в YAML файл? Если конструктор необходимо, почему? }} А вот мой YAML содержимое файла животное: кошка: нога: четыре я получаю эту ошибку, которая весной рамки не удается правильно прочитать мое содержимое файла YAML. java.lang.NullPointerException: нуль на com.openet.tsb.AnimalTest.testAnimal (AnimalTest.java:41) Тест будет проходить после того, как я раскомментировать мой конструктор животных. Так что мой вопрос, конструктор нужен? Есть еще один способ, чтобы пропустить конструктор и autowired переменного согласовывает имя, чтобы имя в YAML файл? Если конструктор необходимо, почему? }} А вот мой YAML содержимое файла животное: кошка: нога: четыре я получаю эту ошибку, которая весной рамки не удается правильно прочитать мое содержимое файла YAML. java.lang.NullPointerException: нуль на com.openet.tsb.AnimalTest.testAnimal (AnimalTest.java:41) Тест будет проходить после того, как я раскомментировать мой конструктор животных. Так что мой вопрос, конструктор нужен? Есть еще один способ, чтобы пропустить конструктор и autowired переменного согласовывает имя, чтобы имя в YAML файл? Если конструктор необходимо, почему? Так что мой вопрос, конструктор нужен? Есть еще один способ, чтобы пропустить конструктор и autowired переменного согласовывает имя, чтобы имя в YAML файл? Если конструктор необходимо, почему? Так что мой вопрос, конструктор нужен? Есть еще один способ, чтобы пропустить конструктор и autowired переменного согласовывает имя, чтобы имя в YAML файл? Если конструктор необходимо, почему?
tboom
1

голосов
1

ответ
156

Просмотры

нет функции согласования для вызова «WidgetBridge :: WidgetBridge ()»

Я посетил этот форум много много много раз, но это мой фактический первый пост здесь. Обычно я могу найти свой ответ здесь, и я предполагаю, что я, вероятно, нашел его на этот раз, но на этот раз мои знания не хватает, чтобы понять, соответствующие решения (узнавали C ++ в течение последних 2-х недель). Я получаю ошибку: нет функции согласования для вызова «WidgetBridge :: WidgetBridge ()» экстракционных моего (довольно длинного) кода: номер класса {частное: // Список инициализатора внутренних объектов WidgetBridge bridge_thermostat; WidgetBridge bridge_relay; общественности: // Конструктор класса: Комната (): bridge_thermostat (V100), bridge_relay (V107) {} недействительным initBridges (String authThermostat, String authRelay) {bridge_thermostat.setAuthToken (authThermostat); bridge_relay.setAuthToken (authRelay); } Недействительного receiveCurrentT (флоят пары) {currentT = пары; Blynk.virtualWrite (V10, currentT); timer.restartTimer (thermostatTimer); // сбросить таймер для isDead термостата Blynk.setProperty (V17, "цвет", BLYNK_GREEN); // Изменение цвета светодиода Blynk.virtualWrite (V17, 200); } } гостинная; BLYNK_CONNECTED () {Blynk.syncAll (); livingRoom.initBridges ( "ххх", "хххх"); // аутентификации из: термостата, реле} BLYNK_WRITE (V10) {livingRoom.receiveCurrentT (param.asFloat ()); } // получить currentT от термостата Исходя из ответов, которые я нашел на этом форуме кажется, что WidgetBridge doens't иметь свой собственный конструктор, когда вызывается. На основании ответов дали я также пытался: общественность: // Конструктор класса: Комната (): {bridge_thermostat = V100; bridge_relay = V107; } Но это оказывается ту же ошибку. Я продолжал читать о статических полей, конструкторов, пространств имен и т.д., но BottomLine: я застрял, и я не знаю, как это исправить. Дополнительная информация: код для esp8266 Arduino модуль Wi-Fi, который обменивается данными с другими esp8266 х (реле и термостат). Связь осуществляется через «мосты», которые создаются с использованием кода из приложения Blynk. Спасибо за ваше время! UPDATE: Я наконец-то нашел фактический Calss widgetbridge самого. А из упомянутого решения, я понял, что она не имеет конструктора сам по себе, но does..so теперь я действительно потерял. Вот часть класса виджета: класс WidgetBridge: частный BlynkWidgetBase {общественности: WidgetBridge (uint8_t vPin): BlynkWidgetBase (vPin) {} недействительными setAuthToken (Const символ * маркер) {обугливается MEM [BLYNK_MAX_SENDBYTES]; BlynkParam CMD (MEM, 0, SizeOf (MEM)); cmd.add (mPin); cmd.add ( "я"); cmd.add (маркер); Blynk.sendCmd (BLYNK_CMD_BRIDGE, 0, cmd.getBuffer (), cmd.getLength () - 1); } (....)};
Wolph42
1

голосов
1

ответ
132

Просмотры

PyBind11: конструктор, который использует указатель на строку

Мне удалось в связывании этого конструктора .DEF (р :: Init ()) Моя проблема в том, когда я должен использовать массив строк, если я, как этот alph2 = [ «х», «у»] г = Dfa (3 , 2, alph2) он не сказал: TypeError: __init __ (): несовместимые аргументы конструктора. Следующие типы аргументов поддерживаются: gi_gipy.Dfa (arg0: INT, arg1: INT, арг2: юникод) Так что я не знаю, как передать из питона нечто, похожее на константную строку *
1

голосов
0

ответ
45

Просмотры

Упражнения Использование Setters- Getters + простой графический интерфейс с кнопкой (JAVA) * Штука *

Я student.So вы можете столкнуться несколько ошибок или любительских ошибок .. Я следующее упражнение дал мне учитель, так что я могу практиковать Java (так как его уже почти год с тех пор я уже первый запрограммированный в Java) Описание: класс -> Выполнить Sandwitch (определенный вес (INT), количество incredients в нем (INT) и его цена (INT) Сделайте класс для него указан конструктор для него (+ Сеттеры + геттеры)... Создайте кнопку, которая всякий раз, когда получает нажимается она создает пару бутербродов и помещает их в 50 блоков массива. Помещенные внутри кода любых логических исключений (по цене не
Michipi
1

голосов
1

ответ
204

Просмотры

Pybind: Можно ли сообщить Python об именах аргументов для конструкторов?

В Pybind можно сообщить Python об именах аргументов для функций: m.def ( «добавить», и добавить, «Функция, которая добавляет два числа», ру :: Арг ( «я»), ру :: агд ( "J")); (Http://pybind11.readthedocs.io/en/stable/basics.html#keyword-arguments) Есть ли что-то подобное для конструкторов? Spyder (Anaconda) уже показывает входные аргументы функций по умолчанию, но для конструкторов «помощь» только показывает: (* Args, ** kwargs).
thzu
1

голосов
1

ответ
34

Просмотры

Чтобы уточнить мои идеи для копирования инициализации и прямой инициализации

Определим класс следующим образом: класс А {общественности: A (): s ( "") {} // конструктор по умолчанию A (Const символ * pStr): s (pStr) {} // конструктор с параметром A (Const & A ): s (как) {} // конструктор копирования ~ A () {} // деструктор частное: станд :: строка s; }; Приведенный ниже код будет выполняться прямой инициализации: A a1 ( "Hello!"); // прямая инициализация с помощью вызова конструктора с параметром A a2 (a1); // прямой инициализация с помощью вызова конструктора копирования и что следует выполнит инициализацию копирования: A a3 = a1; A4 = "Hello!"; В моем понимании, А a4 = «Hello» эквивалентно: // создать временный объект, а затем «копия» это временный объект в а4, вызвав конструктор копирования ТЕмп ( "Hello!
Finley
1

голосов
1

ответ
44

Просмотры

Выбор и отменив нарисованные объекты на холсте и перемещение к мыши X и Y

Прилагается код показывает, как выбрать (по щелчку) на нарисованный объект на холсте, а затем объект перемещается с двойным щелчком мыши щелкнуть позицию или отменить двойным щелчком до / после движения. Я пытался в течение нескольких дней, но не мог понять, как применять эту функцию для всех объектов в классе или массиве с помощью цикла (с помощью конструктора класса + прототипирования). Я хотел бы иметь возможность выбрать или отменить выбор любого объекта на экране. Помощь будет очень высоко ценится. Спасибо. холст {дисплей: блок; Маржа: 0px; } {Тело поле: 0px; } Window.onload = функция () {вар холст = document.getElementById ( "холст"); Контекст = canvas.getContext ( "2d"); ширина = canvas.width = window.innerWidth; высота = canvas.height = window.innerHeight; пусть strokeColor; пусть цвет; пусть mouse_x; пусть mouse_y; пусть х; пусть у; пусть ш; Пусть Н; пусть выбраны = ложь; х = 50; у = 50; ш = 50; ч = 50; Цвет = «зеленый»; strokeColor = "зеленый"; . Document.getElementById ( 'холст') addEventListener ( "MouseMove", идти); document.getElementById ( 'холст') addEventListener ( "MouseUp", MouseUp). document.getElementById ( 'холст') addEventListener ( "DblClick", DblClick). document.getElementById ( 'холст') addEventListener ( "DblClick", движение). Функция шаг () {если (== выбрано верно) {х = mouse_x; у = mouse_y; }} Функция MouseUp () {если (mouse_x> х && mouse_x <х + ш && mouse_y> у && mouse_y <у + ш) {strokeColor = "черный"; = выбран верно; console.log (выборочно); }} Функция DblClick () {если (mouse_x> х && mouse_x <х + ш && mouse_y> у && mouse_y <у + ш) {цвет = "зеленый"; strokeColor = цвет; выбран = ложь; console.log (выборочно); }} Функция Go (е) {mouse_x = e.clientX; mouse_y = e.clientY; . Document.getElementById ( 'click1') значение = mouse_x; . Document.getElementById ( 'click2') значение = mouse_y; } Функция дро () {context.strokeStyle = strokeColor ;; context.fillStyle = цвет; context.beginPath (); context.lineWidth = 3; context.rect (х, у, ш, ч); context.fill (); context.stroke (); } Функция одушевленные () {context.clearRect (0,0, ширина, высота); context.save (); рисовать(); context.restore (); requestAnimationFrame (одушевленные); } Анимации (); };
Alex H
1

голосов
1

ответ
35

Просмотры

How to access a the prototype object from within a constructor function?

How to access a the prototype object from within a constructor function ? In the following Javascript code I have a Person constructor with two getter/setter functions, and a hydrate function defined inside it's prototype: +++++++++++++++++++++++++++++ + Person + +++++++++++++++++++++++++++++ + setFirstname( firstname ) + + getFirstname() + + setLastname( lastname ) + + getLastname() + +++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++ + Person.prototype + +++++++++++++++++++++++++++++ + hydrate( person ) + +++++++++++++++++++++++++++++ I'd like to call the hydrate() function from within the Person constructor, even though it makes no sense to me, it's like calling a method before the object is fully created, right? correct me if I'm wrong. Javascript code : function Person( person ) { var _firstname = '', _lastname =''; if ( person ) this.hydrate( person ); function setFirstname( firstname ) { _firstname = firstname; } function getFirstname() { return _firstname; } function setLastname( lastname ) { _lastname = lastname; } function getLastname() { return _lastname; } this.setFirstname = setFirstname; this.getFirstname = getFirstname; this.setLastname = setLastname; this.getLastname = getLastname; } Person.prototype = { hydrate: function( person ) { this.setFirstname( person.firstname ); this.setLastname( person.lastname ); } }; var john = new Person( { firstname: "John", lastname: "Doe" } ); Result : Error: Uncaught TypeError: this.setFirstname is not a function Question: How am I supposed to do that ? is that even possible ?
CryptoBird
1

голосов
1

ответ
29

Просмотры

Чистый вещий состав с параметрами по умолчанию

Предположим, я хочу, чтобы составить два объекта, и я хотел бы, чтобы иметь возможность быть в состоянии определить несколько конструкторов, уважающие аргументы по умолчанию. Класс A: Защита __init __ (х, у = 0): self.x = х = у self.y класс В: Защите __init __ (ш, objA, г = 1): self.w = ш = self.objA objA себе. г = г Я хотел бы иметь несколько конструкторов для B, которые позволяют мне либо передать объект а или передать параметры, а затем построить А. Глядя на Что такое чистый, вещий способ иметь несколько конструкторов в Python? Я могу сделать: Класс B: Защита __init __ (ш, objA, г = 1): self.w = ш = self.objA objA self.z = г @classmethod Защиты from_values ​​(ЦБС, W, Z, х, у): objA = а (х, у) возвращение ЦБС (ш, objA, г) проблема заключается в том, что значения по умолчанию перезапись, и я хотел бы, чтобы держать их. Далее, конечно, не работает. @classmethod Защиту from_values ​​(КНК, W, X, ** kwargs): objA = А (х, ** kwargs) возвращают ЦБС (ш, objA, ** kwargs) Так что, кажется, я застрял с запоминанием значения по умолчанию и называя их как это @classmethod четкости from_values ​​(ЦБС, ш, х, г = 1, у = 0): objA = А (х, у) возвращение ЦБС (ш, objA, г) Это не то, что я хочу, так как я d, а есть объекты сами обрабатывать значения по умолчанию и не будут вынуждены помнить значения по умолчанию. Я мог бы сделать один лучше, чем выше и использования: @classmethod Защиту from_values ​​(ЦБС, W, X, г = 1, ** kwargs): objA = А (х, ** kwargs) возвращают ЦБС (ш, objA, г) Но в данном случае мне еще нужно «помнить» значение по умолчанию для г. Есть ли решение Pythonic к этому? Является ли это проблемой дизайн? Может кто-то момент мне хороший шаблон дизайна или наилучшую практику? Эта проблема соединения при создании с несколькими объектами ... класс L: Защиту __init __ (objM, objN): self.objM = objM self.objN = objN @classmethod Защиту from_values ​​(ЦБС, m1, m2, m3, n1, n2): objM = М (m1, m2, m3) objN = N (n1, n2) возвращают ЦБС (objM, objN)
moquant
1

голосов
2

ответ
122

Просмотры

Copying objects with all elements in C++! (Constructors and Assignment, best practice?)

Я порылся SO и узнал много о конструкторах по умолчанию, конструкторов копирования, объекты назначения, интеллектуальные указатели, неглубокую / глубокой копии и их отношения с выделением динамической памяти (например, это, это, это и ...). Тем не менее, я все еще нечеткий на сделать вывод о том, что лучшая практика для обработки копирования объектов таких элементов, как векторы (или список). Я узнал STL вектор, в частности, обрабатывает это его копия по умолчанию конструктор и лучшая практика в данном случае не управлять ресурсами самостоятельно. Но, кажется, я что-то неправильно понять. Мои усилия, прежде чем спросить: Я также было в состоянии решить эту проблему с прохождением объектов по ссылке, но я закончил иметь слишком много операторов почтения (т.е. **). Какие' S лучшая практика здесь для простых небольших объектов, таких, как один в следующем коде? Элементы векторов не копируются должным образом. (Я не был бы удивлен, если я делаю очень простую ошибку здесь. Кроме того, не используя сырье / Shared / смарт-указатели является предпочтительным, если это возможно). # include # include с помощью патезраса; класс А {общественности: ИНТ идентификатор; А (INT идентификатор _): идентификатор (ID _) {} вектор Childs; }; INT основных () {a a0 (0), а1 (1); a0.childs = {а1}; //node0.childs.push_back(node1); a1.childs = {а0}; //node1.childs.push_back(node0); соиЬ INT основных () {a a0 (0), а1 (1); a0.childs = {а1}; //node0.childs.push_back(node1); a1.childs = {а0}; //node1.childs.push_back(node0); соиЬ INT основных () {a a0 (0), а1 (1); a0.childs = {а1}; //node0.childs.push_back(node1); a1.childs = {а0}; //node1.childs.push_back(node0); соиЬ
Damore Su
1

голосов
2

ответ
90

Просмотры

Конструктор по умолчанию не может обрабатывать тип исключения IOException брошен

Извинения, если это есть ответ, но я имел взгляд и не могу найти ничего, что помогает мне. Я получаю ошибку в названии при попытке запустить следующий код. Кто-нибудь знает, что явный конструктор может быть использован, чтобы исправить эту ошибку? общественный класс HomePageTest расширяет TestBase {LoginPage LoginPage; Главные Главный; ShopByDepartmentPage shopByDepartmentPage; JamiesAmazonPage jamiesAmazonPage; TodaysDealsPage todaysDealsPage; MyAccountPage myAccountPage; BasketPage basketPage; общественный HomePageTest () бросает IOException {супер (); } @BeforeMethod общественности пустот SETUP () бросает IOException {инициализация (); LoginPage = новый LoginPage (); shopByDepartmentPage = новый ShopByDepartmentPage (); jamiesAmazonPage = новый JamiesAmazonPage (); todaysDealsPage = новый TodaysDealsPage (); myAccountPage = новый MyAccountPage (); basketPage = новый BasketPage (); = loginPage.login ГЛАВНОЙ СТРАНИЦЕ (prop.getProperty ( "имя пользователя"), prop.getProperty ( "пароль")); }} Мой тест Базовый кодекс: общественный статический драйвер WebDriver; общественные статические свойства подпирать; общественный TestBase () бросает IOException {попробуйте {проп = новые свойства (); FileInputStream Fis = новый FileInputStream ( "D: \\ Users \\ mcalpinej \\ Desktop \\ POM проекта \\ POM_Project \\ \\ ЦСИ главная \\ ява \\ Config \\ config.properties"); prop.load (ФИС); } Задвижка (FileNotFoundException е) {e.printStackTrace (); } Поймать (IOException е) {e.printStackTrace (); }} Государственной статической силы инициализации () {если (prop.getProperty ( "браузер"). Равно (» privateRun (SuiteRunner.java:415) при org.testng.SuiteRunner.run (SuiteRunner.java:364) в org.testng.SuiteRunnerWorker.runSuite (SuiteRunnerWorker.java:52) в org.testng.SuiteRunnerWorker.run (SuiteRunnerWorker.java : 84) при org.testng.TestNG.runSuitesSequentially (TestNG.java:1208) в org.testng.TestNG.runSuitesLocally (TestNG.java:1137) в org.testng.TestNG.runSuites (TestNG.java:1049) в орг .testng.TestNG.run (TestNG.java:1017) при org.testng.remote.AbstractRemoteTestNG.run (AbstractRemoteTestNG.java:114) в org.testng.remote.RemoteTestNG.initAndRun (RemoteTestNG.java:251) в орг. testng.remote.RemoteTestNG.main (RemoteTestNG.java:77) Когда я пытаюсь поставить метод @Before в попытке поймать как ниже я все еще получаю то же сообщение об ошибке: @BeforeMethod общественности недействительной нАлАдкИ () {инициализация (); попробуйте {LoginPage = новый LoginPage (); shopByDepartmentPage = новый ShopByDepartmentPage (); jamiesAmazonPage = новый JamiesAmazonPage (); todaysDealsPage = новый TodaysDealsPage (); myAccountPage = новый MyAccountPage (); basketPage = новый BasketPage (); = loginPage.login ГЛАВНОЙ СТРАНИЦЕ (prop.getProperty ( "имя пользователя"), prop.getProperty ( "пароль")); } Задвижка (Исключение е) {e.printStackTrace (); } ShopByDepartmentPage код: класс ShopByDepartmentPage общественности расширяет TestBase {@FindBy (XPATH = "// тр // тд [1] // ДИВ [1] // уль [1] // Ли [1]") WebElement видео; @FindBy (XPath = "// Ли [@ класс = 'nav_first'] // а [@ класс = 'nav_a'] [содержит (текст (), 'Книги')]") WebElement книги; @FindBy (XPath = "// Ли [@ класс = 'nav_first'] // а [@ класс = 'nav_a'] [содержит (текст (), 'Amazon Music Unlimited'
jamiemca
1

голосов
2

ответ
509

Просмотры

загрузить файл на Laravel 5.7

Привет у меня есть какой-то вопрос о коде .dont хочет загрузить файл на базе данных, и я бы все операции здесь, но посоветовал, что не решено решение в моем случае, и это ошибка и код: Аргумент 2 передается Symfony \ Component \ HttpFoundation \ RedirectResponse: : __ конструкт () должен иметь целочисленный тип, массив заданной, называемый в D: \ блог \ поставщика \ Laravel \ Framework \ SRC \ Осветите \ Routing \ Redirector.php на линии 203 Это индуктор ENCTYPE на моей форме лезвия (создать. blade.php) и это метод хранения кода впрыскивать мои данные общественные функции магазина (cvRequest $ запрос) {если ($ request-> вход ( 'презентация')! == NULL && $ request-> вход ( 'титр') ! == NULL) {$ резюме = новый Cv (); $ CV-> презентация = $ request-> вход ( 'представление'); $ CV-> название = $ request-> вход ( 'титр'); $ CV-> user_id = Auth :: пользователя () -> идентификатор; если ($ request-> hasFile ( 'фото')) {$ CV-> фото = $ request-> файл ( 'фото') -> магазин ( 'образ', ​​'общественность'); } $ CV-> Save (); сессия () -> вспышка ( 'enregistrement', 'Le резюме été Ыеп ajouté'); вернуться редирект ( 'CVS', [ 'резюме' => $ CV-> user-> имя]); } Еще {возвращение вид ( 'cv.create'); эхо «предупреждение (" Remplir лес Информация несессер а.е. Formulaire !!)»; }}, И я уже сделать хранение PHP мастеровых: ссылку на мой общедоступный файл, и я не получаю это вопросы, спасибо. фото = $ request-> файл ( 'фото') -> магазин ( 'образ', ​​'общественность'); } $ CV-> Save (); сессия () -> вспышка ( 'enregistrement', 'Le резюме été Ыеп ajouté'); вернуться редирект ( 'CVS', [ 'резюме' => $ CV-> user-> имя]); } Еще {возвращение вид ( 'cv.create'); эхо «предупреждение (" Remplir лес Информация несессер а.е. Formulaire !!)»; }}, И я уже сделать хранение PHP мастеровых: ссылку на мой общедоступный файл, и я не получаю это вопросы, спасибо. фото = $ request-> файл ( 'фото') -> магазин ( 'образ', ​​'общественность'); } $ CV-> Save (); сессия () -> вспышка ( 'enregistrement', 'Le резюме été Ыеп ajouté'); вернуться редирект ( 'CVS', [ 'резюме' => $ CV-> user-> имя]); } Еще {возвращение вид ( 'cv.create'); эхо «предупреждение (" Remplir лес Информация несессер а.е. Formulaire !!)»; }}, И я уже сделать хранение PHP мастеровых: ссылку на мой общедоступный файл, и я не получаю это вопросы, спасибо. резюме, [ 'резюме' => $ CV-> user-> имя]); } Еще {возвращение вид ( 'cv.create'); эхо «предупреждение (" Remplir лес Информация несессер а.е. Formulaire !!)»; }}, И я уже сделать хранение PHP мастеровых: ссылку на мой общедоступный файл, и я не получаю это вопросы, спасибо. резюме, [ 'резюме' => $ CV-> user-> имя]); } Еще {возвращение вид ( 'cv.create'); эхо «предупреждение (" Remplir лес Информация несессер а.е. Formulaire !!)»; }}, И я уже сделать хранение PHP мастеровых: ссылку на мой общедоступный файл, и я не получаю это вопросы, спасибо.
Badr
1

голосов
1

ответ
42

Просмотры

Why doesn't the constructor update class variables?

On my Roles component, the following line works well: public ngOnInit(): void { this.rolesFromSugar = this.sugarService.getRolesFromSugar(); } and my service looks like this public getRolesFromSugar(): Role[] { this.getData("roles") .subscribe((roles) => { roles.data.forEach((role) => { this.roleList.push(new Role(role)); }); }); return this.roleList; } private getData(item: string): Observable { return this.http.get(this.endPoint + `${item}`); } And my Role looks like this: import { Model } from "./model"; export class Role extends Model { public type: string = "users"; public id: string; public name: string; public description: string; constructor(data?: any) { super(data); } } export abstract class Model { public constructor(data?: any) { const self = this; if (undefined !== data && null !== data) { for (const prop in data) { if ("attributes" !== prop) { if (typeof data[prop] !== "function") { self[prop] = data[prop]; } } } if (undefined !== data.attributes && null !== data.attributes) { for (const prop in data.attributes) { if (typeof data.attributes[prop] !== "function") { self[prop] = data.attributes[prop]; } } } } } } This works with no issue and I can see everything on my component. But when it comes to the User model, the props just won't update: public ngOnInit(): void { this.usersFromSugar = this.sugarService.getUsersFromSugar(); } public getUsersFromSugar(): User[] { this.getData("users") .subscribe((users) => { users.data.forEach((user) => { this.userList.push(new User(user)); }); console.log("USERLIST", this.userList); }); return this.userList; } import { Model } from "./model"; export class User extends Model { public type: string = null; public id: string = null; public userName: string = null; public salutation: string = "Mrs."; public lastName: string = null; public firstName: string = null; public phoneHome: string = null; public phoneMobile: string = null; public phoneWork: string = null; public phoneOther: string = null; public phoneFax: string = null; public phoneAsterisk: string = null; public email: string = null; public status: string = "Active"; public employeeStatus: string = "Active"; public title: string = null; public managerId: string = null; public department: string = null; public officeId: string = null; public teamId: string = null; public tourplanID: string = null; public swClickToCall: boolean = false; public swCallNotification: boolean = false; public codeSonGalileo: string = null; public swPhoneNumber: string = null; public swExtension: string = null; public swTelephony: boolean = false; public inheritsPreferencesFrom: string = "user_default"; public roleId: string = null; public serviceId: string = null; public functionId: string = null; public destinations: string[] = []; public ggOrganisationId: string = null; public ggGroups: string = null; public isAdmin: number = 0; public apiPortalUser: number = 0; public assignationNotification: number = 0; public userGroup: number = 0; public defaultTeams: number = 1; public leadsMin: number = 15; public leadsMax: number = 45; public constructor(data?: any) { super(data); console.log("data passed to super, ", data); } } When I console.log(self[prop]), I see it all right. But then the variables just don't update and keep their default values. We are running Angular 4 in a Docker For all intents and purposes, this is what the data looks like: { "data": [ { "type": "users", "id": "4ab50c2e-fce7-8385-2e9f-5c2e85737c1a", "attributes": { "id": "4ab50c2e-fce7-8385-2e9f-5c2e85737c1a", "userName": "asdasdsad", "salutation": "", "lastName": "asdasdsadsad", "firstName": "asdasdsad", "phoneHome": null, "phoneMobile": null, "phoneWork": "0123456789", "phoneOther": null, "phoneFax": null, "phoneAsterisk": "2083", "email": null, "status": "Active", "employeeStatus": "Active", "title": null, "managerId": "", "department": "Ventes", "officeId": "1009", "teamId": "", "tourplanID": "asdasd", "swClickToCall": "1", "swCallNotification": "1", "codeSonGalileo": "" } }, { "type": "users", "id": "asdasdasdsadsad", "attributes": { "id": "asdsadsadsa", "userName": "asdsadasd", "salutation": "Mr.", "lastName": "asdsa asdsad", "firstName": "asdsad", "phoneHome": null, "phoneMobile": null, "phoneWork": "018888888", "phoneOther": null, "phoneFax": null, "phoneAsterisk": "2272", "email": null, "status": "Active", "employeeStatus": "Active", "title": null, "managerId": "8aba3fff-7c33-f4ea-283d-57d1e94e6627", "department": "Ventes", "officeId": "1009", "teamId": "Iroquois", "tourplanID": "asdasd", "swClickToCall": "1", "swCallNotification": "1", "codeSonGalileo": "" } }, If the constructor could update the User model just like it updates the Role model variables, then my component could display the data fetched from the API. Thank you a lot in advance. EDIT: I tried this and I still have the same result: public getUserPromiseFromSugar(): Promise { return this.getData("users") .map((users) => users.data) .toPromise(); } public getUsersFromSugar(): User[] { this.getUserPromiseFromSugar() .then((users) => users.forEach((user) => this.userList.push(new User(user)))) .then((data) => console.log("promise over", this.userList)); setInterval(() => console.log("this userlist", this.userList), 1000); return this.userList; }
Ben
1

голосов
3

ответ
63

Просмотры

Используя «правило нуля», когда у меня есть указатели для полиморфизма

Для «правил нуля», я понимаю, что я хочу, чтобы отделить управление данными из в простые классы, реализующих правило 3, правило 5, независимо, так что более сложные классы могут использовать конструктор, оператор присваивания и т.д., а автоматически предоставлена. Как это работает, когда член класса должен быть указателем из-за полиморфизм? Например, предположим, что у меня есть класс класс MyClass {личное: s_array mynumbers; s_array mydoubles; Base * объект; ...}; Здесь основание представляет собой базовый класс с несколькими производными классами, и объект может быть точкой к одному из производных классов. Таким образом объект является указателем для того, чтобы получить полиморфизм. Если бы не наличие этого указателя базы, я мог бы использовать Верховенство нуля для MyClass предполагающих s_array правильно реализованы. Есть ли способ, чтобы установить вещи так, что MyClass может использовать правило нуля, даже если объект является указателем? Поведение, которое я хочу на копию, что новый экземпляр MyClass получает указатель на новую копию объекта.
Wes
1

голосов
4

ответ
38

Просмотры

Java | acessing object variables from inside constructor?

Я обычно не использовать Java, и я в настоящее время пытаюсь помочь другу с присвоением Java, и это имеет меня застрял я пытаюсь получить доступ к массиву, который я создаю в конструкторе объекта, но я не могу понять, как для доступа к нему. общественный класс ADTbag {Строка пункт = «Проверка»; общественный ADTbag (интермедиат размер) {// Этот конструктор имеет один параметр, имя. Строка [] мешок = новый String [размер]; мешок [0] = Integer.toString (размер); System.out.println ( "Мешок был создан с размером" + размер + "|" + сумка [0]); } Общественного недействительными вставки () {/ * Вставьте элемент * / / * Одна проблема эта общественная пустота не имеет доступа к сумке вар»System.out.println (мешок); } Я чувствую, что это простое понятие в Java, но я не могу найти что-нибудь на моем Googles, который помог мне. Я хочу, чтобы иметь возможность вставить что-то в сумке или строкового массива объектов с использованием метода вставки. Так что-то вроде этого. государственной статической силы основных (String [] арг) {/ * Создание объекта * / ADTbag myBag = новый ADTbag (5); Значение String = "Некоторые Value"; / * Я хочу сделать это * / mybag.insert (стоимость); }}
Echo
1

голосов
2

ответ
43

Просмотры

Что значит «переопределить» в CTOR из ServiceBase?

Я недавно начал работать с WinServices, и я наткнулся на эту ссылку о WinService CTOR и он говорит о «переопределяя» конструктор ServiceBase. Чувство глупо я гугл, что это значит, и наткнулся на это. Вопрос: Что они на самом деле имеют в виду, говоря «переопределение» в Документах цепи обратно явно к ServiceBase CTOR?
Nichita Cebotari
1

голосов
0

ответ
18

Просмотры

OK to add this as a Listener inside constructor of final class if single threaded?

I inherited a large Swing application. Consider this bare bones version of its GUI's main window class: import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.SwingUtilities; final class ListenerExample1 extends JFrame implements ActionListener { private final JButton button = new JButton("Click me"); private int clickCount = 0; public static void main(String... args) throws Exception { SwingUtilities.invokeAndWait( () -> { ListenerExample1 instance = new ListenerExample1(); instance.setVisible(true); instance.pack(); } ); } ListenerExample1() throws IllegalStateException { if (!EventQueue.isDispatchThread()) throw new IllegalStateException("the current thread (" + Thread.currentThread().toString() + ") is not EventQueue's dispatch thread"); add(button); button.addActionListener(this); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } @Override public void actionPerformed(ActionEvent e) throws IllegalStateException { if (!EventQueue.isDispatchThread()) throw new IllegalStateException("the current thread (" + Thread.currentThread().toString() + ") is not EventQueue's dispatch thread"); markButtonAsClicked(); } void markButtonAsClicked() throws IllegalStateException { if (!EventQueue.isDispatchThread()) throw new IllegalStateException("the current thread (" + Thread.currentThread().toString() + ") is not EventQueue's dispatch thread"); button.setText("click #" + (++clickCount)); } } This code is stripped down 100 times from the actual application to achieve a Minimal, Complete, and Verifiable example. IntelliJ correctly warns me that this line button.addActionListener(this); is causing the this reference to escape during construction. I am fully aware of why this is usually a bad thing. This is discussed at length in "The Bible", Java Concurrency In Practice. Some dedicated articles by Goetz on this topic are Safe construction techniques and Be a good (event) listener. However, is it actually bad in this case? In particular, note that this class should only ever be touched by a single thread. That is because of the rule that Swing components must only be touched by EventQueue's dispatch thread (the "EDT"). So, the main method uses SwingUtilities.invokeAndWait, and the constructor and instance methods all check that the calling thread is the EDT. Also, note that this class is final, which rules out subclass issues. So, I think that the code above is actually safe, despite IntelliJ's warning, but I want to know if I have overlooked some subtle problem. There are reasons, not obvious in the simplified code above, why I want to add this as a Listener in several constructors of my actual application. Speaking of IntelliJ, I note that the code above can be simplified. Instead of having the class implements ActionListener, which therefore exposes the actionPerformed method for no good reason, you can use a lambda to implicitly create an instance inner class: import java.awt.EventQueue; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.SwingUtilities; final class ListenerExample2 extends JFrame { private final JButton button = new JButton("Click me"); private int clickCount = 0; public static void main(String... args) throws Exception { SwingUtilities.invokeAndWait( () -> { ListenerExample2 instance = new ListenerExample2(); instance.setVisible(true); instance.pack(); } ); } ListenerExample2() throws IllegalStateException { if (!EventQueue.isDispatchThread()) throw new IllegalStateException("the current thread (" + Thread.currentThread().toString() + ") is not EventQueue's dispatch thread"); add(button); button.addActionListener( (e) -> markButtonAsClicked() ); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } void markButtonAsClicked() throws IllegalStateException { if (!EventQueue.isDispatchThread()) throw new IllegalStateException("the current thread (" + Thread.currentThread().toString() + ") is not EventQueue's dispatch thread"); button.setText("click #" + (++clickCount)); } } To my surprise, IntelliJ does not warn that this new lambda line button.addActionListener( (e) -> markButtonAsClicked() ); is once again causing the this reference to escape during construction--and this line most certainly does let the this escape! Is this just a defect in IntelliJ's inspection code? Or is there some subtle reason why the lambda code actually is safe in general? (This new lambda code should be safe in this particular case for the same reasons discussed above for the original version.)
HaroldFinch
1

голосов
0

ответ
11

Просмотры

JPA Конструктор Выражение со всей организацией в PARAM

Я пытаюсь сохранить результат запроса в пользовательской Pojo с использованием JPA Конструктора Expression Это прекрасно работает: @Query ( "выберите новый com.my.package.FinalDTO (c.id, SUM (p.revenue) в качестве дохода) от компании с LEFT JOIN c.products р GROUP BY с «) Однако, в реальности я потребуется около 25 полей от компании Entity, так что я пытался сделать это вместо перечисления столько полей: @Query (» выбрать новый ком. my.package.FinalDTO (с, SUM (p.revenue) в качестве выручки) от компании с LEFT JOIN c.products р GROUP BY с ") Но я получаю сообщение об ошибке, что спящий режим пытается сохранить c.id (который строка) в Long? Запрос я вижу в журналах, кажется, не выбрать все Субъекта компании, но только поле ID: выберите company0_.id в col_0_0_, сумма (products1_.revenue) как col_1_0_ из ...
Marco
1

голосов
1

ответ
1.5k

Просмотры

Python и Qt (PyQt) - вызова метода перед тем размер события

у меня вопрос. Существует класс приложения в моей программе. Он унаследовал от QtGui.QMainWindow. В ини я называю свой собственный метод, который работает с графикой. И она должна быть вызвана до события изменения размера. Как я могу это сделать? Благодарю. EDIT: Как вы можете себе здесь значение события изменения размеров 14, и показать событие 17. Таким образом, я должен найти событие с менее чем 14 значения. Я нашел мою проблему. В конструкторе перед созданием ручки изображения я переезжаю окно в какую-то позицию ... Так что в течение этого действия resizeEvent вызовов. Извините за этот вопрос.
Max Frai
0

голосов
2

ответ
36

Просмотры

ошибка сегментирования во время выполнения консольного кода в C ++

Я пытаюсь сделать простую консоль студента деталь отображения системы, в которой есть 2 классов, класс ученик (Базовый класс) с переменными-членами для имени и регистрационного номера и класс studentAthlete (производный класс) со спортивным строковым типом. Код компилируется успешно, но во время выполнения запрашивает только для деталей студента, но не отображает детали, как можно было бы ожидать, когда я вызываю функцию идентификации (). На блоках кода, ошибка не может показать, а на интернет-компиляций, таких как https://www.onlinegdb.com/online_c++_compiler это показывает, что есть ошибка сегментации в коде. Пожалуйста помогите, где это необходимо. Мой код точно (в целом), как показано ниже: #include с помощью патезраса; / ** Базовый класс ** / класс студент {защищен: строка studName, studRegNum; общественности: студент (строка stdName, строка REGNO); / ** Для определения дружественный класс, который является общим для обоих классов ** / друга недействительными идентифицировать (); }; / ** Конструктор класса студент ** / студент :: студент (строка stdName, строка REGNO) {studName = stdName; studRegNum = REGNO; } / ** производного класса ** / класс studentAthlete: общественный студент {частное: строка member_sport; общественности: / ** Чтобы создать конструктор для класса studentAthlete в классе ** / studentAthlete (строка student_sport): студент (studName, studRegNum) {member_sport = student_sport; } / ** Для определения дружественный класс, который является общим для обоих классов ** / друга недействительными идентифицировать (); }; / ** Для отображения информации студент ** / аннулируются идентификации () {studentAthlete са (sa.member_sport); соиЬ студент (строка stdName, строка REGNO) {studName = stdName; studRegNum = REGNO; } / ** производного класса ** / класс studentAthlete: общественный студент {частное: строка member_sport; общественности: / ** Чтобы создать конструктор для класса studentAthlete в классе ** / studentAthlete (строка student_sport): студент (studName, studRegNum) {member_sport = student_sport; } / ** Для определения дружественный класс, который является общим для обоих классов ** / друга недействительными идентифицировать (); }; / ** Для отображения информации студент ** / аннулируются идентификации () {studentAthlete са (sa.member_sport); соиЬ студент (строка stdName, строка REGNO) {studName = stdName; studRegNum = REGNO; } / ** производного класса ** / класс studentAthlete: общественный студент {частное: строка member_sport; общественности: / ** Чтобы создать конструктор для класса studentAthlete в классе ** / studentAthlete (строка student_sport): студент (studName, studRegNum) {member_sport = student_sport; } / ** Для определения дружественный класс, который является общим для обоих классов ** / друга недействительными идентифицировать (); }; / ** Для отображения информации студент ** / аннулируются идентификации () {studentAthlete са (sa.member_sport); соиЬ / ** Чтобы создать конструктор для класса studentAthlete в классе ** / studentAthlete (строка student_sport): студент (studName, studRegNum) {member_sport = student_sport; } / ** Для определения дружественный класс, который является общим для обоих классов ** / друга недействительными идентифицировать (); }; / ** Для отображения информации студент ** / аннулируются идентификации () {studentAthlete са (sa.member_sport); соиЬ / ** Чтобы создать конструктор для класса studentAthlete в классе ** / studentAthlete (строка student_sport): студент (studName, studRegNum) {member_sport = student_sport; } / ** Для определения дружественный класс, который является общим для обоих классов ** / друга недействительными идентифицировать (); }; / ** Для отображения информации студент ** / аннулируются идентификации () {studentAthlete са (sa.member_sport); соиЬ
1

голосов
2

ответ
3.5k

Просмотры

Passing arrays into testclass constructors

Мне нужно пройти 1d массив, который не определен в методе. Мне нужно создать TestClass затем сделать массивы себя. Я просто не уверен в синтаксисе. Пример, вот моя компания класса: класс компании общественного {имя строки; Строка адреса; Сотрудник employeeList [] = новый сотрудник [3]; публичная компания (название String, String адрес, служащий employeeList, String jobTitle) {this.name = имя; this.address = адрес; } общественного недействительными printDetails () {для (INT I = 0; I> employeeList.length; я ++) {System.out.println ( "The Companys имя" + имя); System.out.println ( "The Companys Адрес является" + адрес); System.out.println ( "Список сотрудников являются" + employeeList [я] .name); System.out.println (»
OVERTONE
1

голосов
4

ответ
3.2k

Просмотры

Почему я получаю неоднозначное ошибку при вызове конструктора внутри одного и того же класса в Java?

Я не могу понять, почему я получаю неоднозначную ошибку. Это пример кода, что у меня есть: класс MyString общественности {// Данные: частный символ [] theString; // Конструкторы: общественное MyString () {// конструктор по умолчанию} общественного MyString (String s) {// параметризованный конструктор} общественного MyString (Char [] с) {// параметризованный конструктор} общественного MyString (MyString ы) {// копия конструктор} // метод, который вызывает конструктор: общественный MyString Foobar () {возвращение нового MyString (theString); }} Приведенный выше генерирует эту ошибку, когда Foobar () вызывается из другого места: ./MyString.java:15: ссылка на MyString является неоднозначным, как метод MyString (Char []) в MyString и метод MyString (theString) в матче MyString вернуть новый MyString (theString); ^ Любые идеи, почему?
trusktr
1

голосов
1

ответ
352

Просмотры

Можно ли переопределить конструктор с помощью метапрограммирования ограничивается областью в заводной?

Я хотел бы переопределить конструктор класса для тестирования. Я могу сделать это следующим образом: SomeClass.metaClass.constructor = {Карта Params -> Защита экземпляра = BeanUtils.instantiateClass (SomeClass) instance.apply (PARAMS) экземпляр} Это работает, но мне нужен новый конструктор применять только некоторые случаи , В частности, я хотел бы ограничить масштабы этого изменения к закрытию. Я попытался сделать категорию: класс SomeClassCategory {статического Защиту конструктор (например, Params) {}} использование (SomeClassCategory) {Защиту х = новый SomeClass (PARAMS)} Но это создает метод, называемый конструктор вместо фактического конструктора. Есть в любом случае, чтобы определить конструктор в категории? Или я могу применить изменения к метаклассу SomeClass только в пределах блока, как использование (категория) построить?
ataylor
1

голосов
4

ответ
170

Просмотры

Way to create an object

У меня есть конструктор общественного Дорожка (строка путь) {если певд FileNotFoundException ( «Файл не найден», путь) (File.Exists (путь)!); если бросить новый Exception ( "Незаконная аудио формат") (IsAudioFile (путь)!); _path = путь; _id = Guid.NewGuid (); _rate = 0; _length = GetTrackLength (путь); TagLib.File файл = TagLib.File.Create (путь); если (! file.Tag.IsEmpty) {попробуйте {_artist = file.Tag.Artists [0]; } Задвижка (Исключение е) {_artist = ""; } _Title = file.Tag.Title; попробовать {_genre = file.Tag.Genres [0] .ToGenre (); } Задвижка (Исключение е) {_genre = Genre.NoGenre; }} Еще {_artist = "Неизвестный"; _title = "Неизвестный"; _genre = Genre.NoGenre; }} Должен ли я добавлять еще исключение или я должен выбрать другой способ создания объекта? Например: Трек трек = новый трек (путь); Трек = Track.GetInstance ();
Sergey
1

голосов
1

ответ
42

Просмотры

Как добавить массив в объект в JavaScript?

Я пытаюсь добавить массив с именем ингредиенты для объекта с именем addIngredients так, что, когда метод displayRecipe () называется оно будет отображаться как myFavoriteRecipe () объекта, а также массив, показывая его в окне консоли. Я получаю сообщение об ошибке, говорящее displayRecipe () не определено. Почему и как я могу это исправить? вар ингредиенты = []; Функция myFavoriteRecipe () { "использовать строгий"; this.title = "гуакамоле"; this.serves = 8; } Функция addIngredients (элементы) { "использовать строгий"; // СОЗДАНИЯ Instance Var foodItems = новый myFavoriteRecipe (); // Преодолевая ингредиенты продуктов питания ingredients.push (foodItems); возврат товаров; } addIngredients ( "3 Авокадо"); addIngredients ( "1 лайм"); addIngredients ( "1 ТСП соль"); addIngredients (»
Aj96
1

голосов
2

ответ
740

Просмотры

Как переопределить отображаемое имя объекта в Devtools консоли?

Я использую библиотеку base.js Дина Эдвардса для обеспечения ООП в JavaScript. Объекты она создает выглядеть как «klass.proto.constructor» в консоли Chrome. Можно ли отменить свое отображаемое имя, чтобы показать удобочитаемых ярлыки типа «MyClass» и т.д. Я думаю, что это может быть достигнуто, играя с ToString собственности, но я понятия не имею, как это сделать.
jsmarkus
1

голосов
3

ответ
3.8k

Просмотры

передачи массивов в конструкторе

Я должен написать два файл для назначения, клиентского файла, который будет получать два набора данных от пользователя. Первый набор представляет собой список идентификаторов заявителя (INT) и второй набор либо у или п (символ). Наборы данных должны быть введены в двух массивах. то я должен создать файл класса, который будет получать эти два массива в конструктор, который будет запускать через некоторые специфические методы для проверки, если правильные ответы, сколько правильно и, наконец, ответил, какие кандидаты получили самые правильные ответы. Просто у меня два вопроса: 1 - первая строка данных, которые будут введены во второй массив будет ключевым ответом. Можно ли добавить 0 в начало массива заявителя идентификаторов, так что два массива будет соответствовать (ID # {1}, чтобы ответить {1}, так далее)? Второй - с вызовом моего класса файла из моего файла клиента я объявляю массив в обеих? то есть: файл клиента: ИНТ [] ID = новый INT []; символ [] ответ = новый символ []; ValidateMark importClerk = новый ValidateMark (идентификатор, ответ); Конструктор класса: общественные ValidateMark (целое число [], символьные знаки []) Заранее спасибо
NYC Canuck
1

голосов
1

ответ
134

Просмотры

Есть ли способ, чтобы намекнуть, какой конструктор Unity должен использовать?

InjectionConstructor Unity работает хорошо, когда вам нужно вызвать определенный конструктор, потому что у вас есть очень конкретные зависимости в виде (например, любое сочетание внешних зависимостей, называемые регистрации или неназванных регистрациях), но это требует, чтобы все параметры должны быть указаны. Есть ли какой-нибудь способ, чтобы увеличить Юнити «найти и использовать конструктор с наибольшим количеством параметров» с «найти и использовать конструктор с наибольшим количеством параметров, которые также могут принять экземпляр IX где-то в подписи»?
CRAGIN
1

голосов
3

ответ
622

Просмотры

PHP> Как разделить класс на многократный класс?

У меня есть очень большой класс PHP под названием «Player». Существует много функций внутри него (почти 2000 строк). На самом деле, я использую эти функции следующим образом: $ игрока = новый плеер (1) эхо $ player-> getLogin (); Эхо $ player-> getStatisticPerception (); Эхо $ player-> getWeaponId (); Эхо $ player-> attackPlayerId (3, $ player-> getWeaponId ()); Я думаю, что это может быть хорошей идеей, чтобы разделить этот класс на классы кратные, но я не знаю, как. Как я мог создать что-то подобное, например: $ игрок = новый плеер (1); Эхо $ player-> getLogin (); Эхо $ player-> статистику-> getAttack (); Эхо $ player-> stuff-> getWeaponId (); Эхо $ player-> doAction-> attackPlayerId (3, $ player-> getWeaponId ()); Если думать, что я должен создать объект внутри этого объекта, но если я делаю это, я не могу получить доступ к главному «$ игрока»»
lepix
1

голосов
1

ответ
401

Просмотры

Создание пользовательского класса Assertion

Я после обесточивания быстрого принципала. Я задаюсь вопросом, является ли это хорошая практика, чтобы иметь класс Assertion вместо того, чтобы проверить мои аргументы конструктора В параметре. Например: общественного Assertions статического класса {государственного статической силы ParamterIsNotNull (объект субъект, строка ParamName = "") {если (при условии == NULL) бросить новый ArgumentNullException (ParamName, "не может параметр Я быть пустым"); }}, И при использовании: Открытый класс Test {публичный тест (объект OBJ) {Assertions.ParamterIsNotNull (OBJ, "OBJ"); }} Это хорошая практика, чтобы разгрузить бросание исключения к другому классу, или лучше выбросить исключение непосредственно в конструкторе?
Chris
1

голосов
1

ответ
154

Просмотры

используя «это» указатель на два конструктора

Рассмотрим реализацию класса: класс шаблон LSQ {общественности: LSQ (O3CPU * cpu_ptr, IEW * iew_ptr); IEW * iewStage; Класс DcachePort: общественный порт {защищен: / ** Указатель LSQ. * / LSQ * LSQ; общественности: DcachePort (LSQ * _lsq): Порт (_lsq-> имя () + "-dport", _lsq-> CPU), LSQ (_lsq) {}}; ...}; // код шаблона по умолчанию LSQ :: LSQ (O3CPU * cpu_ptr, IEW * iew_ptr): центральный процессор (cpu_ptr), iewStage (iew_ptr), dcachePort (это), {...} // По умолчанию код шаблона станд :: строка LSQ: : имя () сопзЬ {вернуть iewStage-> имя () + ".lsq"; } Так DcachePort () принимает 'это', который на самом деле LSQ (O3CPU * cpu_ptr, IEW * iew_ptr); Теперь я добавил свой собственный конструктор: класс шаблон LSQ {общественности: LSQ (O3CPU * cpu_ptr, IEW * iew_ptr); // код по умолчанию LSQ (O3CPU * cpu_ptr сходи * f_ptr); // добавленный мной МЭН * iewStage; Fetch * fetchStage; Класс DcachePort: общественный порт {защищен: / ** Указатель LSQ. * / LSQ * LSQ; общественности: DcachePort (LSQ * _lsq) // По умолчанию код: Port (_lsq-> имя () + "-dport", _lsq-> CPU), LSQ (_lsq) {}}; ...}; // добавленный мной шаблон LSQ :: LSQ (O3CPU * cpu_ptr сходи * f_ptr) // добавленного мной: центральный процессор (cpu_ptr), fetchStage (f_ptr), dcachePort (это) {} Проблема заключается в том, 'это' в моем конструкторе является LSQ (O3CPU * cpu_ptr сходи * f_ptr) и, когда он входит в DcachePort (это), а затем имя (), он пытается выполнить возврат iewStage-> имя () + ".lsq"; но в моем конструкторе, iewStage не инициализирован. Вместо этого используется fetchStage. Как я могу исправить это?
mahmood
1

голосов
1

ответ
140

Просмотры

How can I construct an array of a parameterized type? [duplicate]

Этот вопрос уже есть ответ здесь: Как создать общий массив в Java? 29 ответов я получу право на проблему здесь. Это метод, который я до сих пор: общественные T [] getAllValues ​​() {Сериализуемый [] Результат = новый Сериализуемый [sets.size ()]; для (INT I = 0; г <sets.size (); я ++) {результат [I] = sets.get (я) .getValue (); } Возвращение (T []) результат; } «Т» является параметризованным типом, который расширяет Сериализуемым. «Наборы» является ArrayList проведения типа, который хранит как строку (ключ) и T (значение), так ПолучитьЗначение () возвращает T. В этом методе, я хочу, чтобы вернуть все Ts в массиве, так что я бы на самом деле нравится делать больше похоже на это: публика T [] getAllValues ​​() {T [] результат = новый T [sets.size ()]; для (INT I = 0; г <sets.size (); я ++) {результат [I] = sets.get (я) .getValue (); } Возвращаемый результат; } Таким образом, Сериализуемый массив, который разливается в массив T была только идея, как работа вокруг, но не работает, к сожалению. Но в то же время, я не могу использовать второй вариант, так как новый T [INT]; Очевидно, нельзя построить, если тип спараметрирован. Это почему? И что еще более важно: Как я могу работать вокруг него? Спасибо заранее EDIT: Я решил проблему, это то, что я придумал: публика T [] getAllValues ​​(T [] typearray) {для (INT I = 0; (г <typearray.length) && (я <наборы .size ()); я ++) {typearray [I] = sets.get (я) .getValue (); } Вернуть typearray; } но не работает, к сожалению. Но в то же время, я не могу использовать второй вариант, так как новый T [INT]; Очевидно, нельзя построить, если тип спараметрирован. Это почему? И что еще более важно: Как я могу работать вокруг него? Спасибо заранее EDIT: Я решил проблему, это то, что я придумал: публика T [] getAllValues ​​(T [] typearray) {для (INT I = 0; (г <typearray.length) && (я <наборы .size ()); я ++) {typearray [I] = sets.get (я) .getValue (); } Вернуть typearray; } но не работает, к сожалению. Но в то же время, я не могу использовать второй вариант, так как новый T [INT]; Очевидно, нельзя построить, если тип спараметрирован. Это почему? И что еще более важно: Как я могу работать вокруг него? Спасибо заранее EDIT: Я решил проблему, это то, что я придумал: публика T [] getAllValues ​​(T [] typearray) {для (INT I = 0; (г <typearray.length) && (я <наборы .size ()); я ++) {typearray [I] = sets.get (я) .getValue (); } Вернуть typearray; } общественные T [] getAllValues ​​(Т [] typearray) {для (INT I = 0; (г <typearray.length) && (I <sets.size ()); я ++) {typearray [I] = sets.get (я ) .getValue (); } Вернуть typearray; } общественные T [] getAllValues ​​(Т [] typearray) {для (INT I = 0; (г <typearray.length) && (I <sets.size ()); я ++) {typearray [I] = sets.get (я ) .getValue (); } Вернуть typearray; }
Tom S.
1

голосов
5

ответ
4.2k

Просмотры

Как я могу использовать конструктор для установки объекта к существующему объекту?

Вот проблема, которую я хочу использовать конструктор, который позволит упростить процесс загрузки изображения. Все, что вам сделать нужду в specifty пути к файлу. Будет ли возможность сделать это через наследование или мне нужно, чтобы создать новый буферизованный объект изображения? вот идея для кода, чтобы сделать его проще для понимания. общественный класс specialImage расширяет BufferedImage {specialImage (String путь) {супер (); это = ImageIO.read (новый файл (Path)); //
Adam
1

голосов
1

ответ
2.3k

Просмотры

Объявление ViewModel с помощью Конструктора инъекции в XAML

Я пытаюсь из единства и у меня возникают проблемы, объявляющие мой ViewModel в XAML. Можете ли вы помочь мне? XAML: Конструктор: [ImportingConstructor] общественных SearchBoxViewModel (IRegionManager RegionManager, IEventAggregator eventAggregator) {this.regionManager = RegionManager; this.eventAggregator = eventAggregator; } Когда я пытаюсь выполнить я получаю resolutionfailedexception. Это работает, когда ViewModel был пустой конструктор. Кажется, как будто это проблемы с инъекцией конструкторы. Если я загрузить модуль, как это: вар SearchView = Container.Resolve (); searchView.DataContext = Container.Resolve (); //RegionManager.RegisterViewWithRegion(RegionNames.SearchRegion, TypeOf (SearchBoxView)); RegionManager.Regions [RegionNames.SearchRegion] .Add (SearchView); Оно работает. Есть ли возможность сделать это с помощью XAML (с лично я считаю, что лучше)? Кстати: Я создаю приложения с МОФ, что в первую очередь связывается с веб-сервиса. Что я должен скорее пользователь: единство или MEF и каковы большие различия между ними? Спасибо, Raphi
raphi011
1

голосов
1

ответ
686

Просмотры

C++ Template constructor, why is copy constructor being called?

I have a class with a template constructor, and the code is actually calling the copy constructor, after the default-constructor, which does not make sense to me as the type is incorrect. For example: class A { public: A(void); // default constructor A(const A& other); // copy constructor template A(const TYPE& object_to_ref); // template constructor }; This template constructor works (is properly called in other cases), but is not properly recognized as the "correct" constructor from another template function: template A& CreateA(const TYPE& object_to_ref) { // THIS FUNCTION IS NEVER SPECIALIZED WITH "A", ONLY WITH "B" !! return *new A(object_to_ref); // CALLS "A::A(const A&)" !!?? } Example fail: B my_b; A& my_a = CreateA(my_b); // "A::A(const A&)" called, not "A::A(const B&)"! This does not make sense to me. The types are wrong to match the copy constructor. What happened? (MSVC2008) My work-around is to not use the template constructor in this case: template A& CreateA(const TYPE& object_to_ref) { A* new_a = new A(); //DEFAULT CONSTRUCTOR new_a->setObjectToRef(object_to_ref); //OTHER TEMPLATE MEMBER FUNCTION return *new_a; } QUESTION: Why was the template constructor not called in this case? (Work-around seems to behave properly, do you suggest an alternative?) EDIT: B is unrelated, with no conversions specified between B and/or A: class B { };
charley
1

голосов
1

ответ
1k

Просмотры

(Iron) Python наследования вопрос конструктор

Так что я пытаюсь сделать подкласс DataGridViewColumn, который имеет как конструктор без аргументов, и конструктор, который принимает один аргумент, который ожидает типа DataGridViewCell. Это мой класс: класс TableColumn (DataGridViewColumn): Защита __init __ (я, строка): супер (TableColumn, самость) self.Text = строка self.CellTemplate = DataGridViewTextBoxCell () self.ReadOnly = True Всякий раз, когда я пытаюсь передать строку в качестве аргумента, как, например: Foo = TableColumn ( «Name») это всегда дает мне это: TypeError: ожидаемый DataGridViewCell, получил ул так что, похоже, что она всегда проходит «строка» к одним аргументом конструктора суперкласса. Я попытался заменить супер (TableColumn, самостоятельный) с супер (TableColumn, самостоятельный) .__ INIT __ (), чтобы быть явно уверен, что я хочу, чтобы вызвать конструктор без аргументов,
jtcramer

Просмотр дополнительных вопросов