Необходимо написать функцию Get() (Получить()). Количество конструкторов не равно количеству деструкторов.
#include <iostream>
class Coord
{
private:
double x, y;
public:
Coord(double _x = 0, double _y = 0) : x(_x), y(_y)
{
x = _x;
y = _y;
std::cout << "Constructor is run" << std::endl;
}
~Coord()
{
std::cout << "Destructor is run" << std::endl;
}
void Show()
{
std::cout << "x = " << x << " y = " << y << std::endl;
}
Coord Get()
{
return *this;
}
Coord& operator = (Coord obj)
{
x = obj.x;
y = obj.y;
return *this;
}
};
int main()
{
Coord object1(10, 15);
object1.Show();
Coord object2;
object2 = object1.Get();
object2.Show();
return 0;
}
Подскажите, пожалуйста, в чем ошибка и как её исправить?
задан 19 мар 2016 в 10:36
Потому что при вызове Coord& operator = (Coord obj)
происходит копирование объекта, а Вы не переопределили коструктор копирования, следовательно компилятор сам его сгенерировал. Можно это исправить(не вызывать конструктор копирования) передавая obj
по ссылке, либо же добавить конструктор копирования:
Coord(const Coord& rhs)
{
std::cout << "Copy constructor is run" << std::endl;
}
ответ дан 19 мар 2016 в 10:50
ixSciixSci
23.7k3 золотых знака46 серебряных знаков61 бронзовый знак
Никакой ошибки нет, при вызове Get
срабатывает неявно определенный конструктор копирования, для которого нет логирования.
ответ дан 19 мар 2016 в 10:47
AbyxAbyx
30.9k13 золотых знаков96 серебряных знаков155 бронзовых знаков
Как уже было сказано в других ответах: проблема кроется в отсутствии определения пользовательской реализации конструктора копирования.
На этот счет в C++ с незапамятных времен существует так называемое «Правило трёх», гласящее, что если класс или структура определяет один из следующих методов, то они должны явным образом определить все три метода:
- Деструктор
- Конструктор копирования
- Оператор присваивания копированием
Помимо этого несколько рекомендаций по коду:
- Повторная установка значений для
x
,y
не требуется, т.к. уже выполняется в инициализаторе конструктора. -
Функции-члены, не изменяющие видимого состояние объекта (
Show
,Get
), следует объявлять с ключевым словомconst
:Coord Get() const;
-
Передачу аргумента в оператор копирующего присваивания в каноническом варианте следует осуществлять по константной ссылке
const Coord& obj
. В общем случае, возможен вариант и передачи по значению, например, при реализации идиомы «copy-and-swap».
ответ дан 20 мар 2016 в 7:50
αλεχολυτ♦αλεχολυτ
28.4k10 золотых знаков57 серебряных знаков118 бронзовых знаков
Имеется класс:
C++ | ||
|
Отдельно даю определения других методов и конструкторов ( в этом же файле ).
При создании экземпляра класса жалуется на то, что класс имеет больше одного конструктора по умолчанию. Но если добавить скобки — предупреждение убирается. Появилось после установки MSVS 2013.
C++ | ||
|
Вот вывод при компиляции:
1>d:dropboxc++c++testtestисходный код.cpp(44): warning C4520: ControlObject: заданы несколько конструкторов, используемых по умолчанию
1>d:dropboxc++c++testtestисходный код.cpp(55): error C2572: ControlObject::ControlObject: переопределение параметра по умолчанию: параметр 1
1> d:dropboxc++c++testtestисходный код.cpp(40): см. объявление «ControlObject::ControlObject»
1>d:dropboxc++c++testtestисходный код.cpp(87): warning C4018: <: несоответствие типов со знаком и без знака
И встречный вопрос, возможно связанный с темой: если я записываю определения конструкторов за пределами класса, выводиться предупреждение о том, что конструктор уже объявлен, хотя я пишу определение. В чем проблема? Подскажите пожалуйста.
В настоящее время я работаю над классом CVector, все работало нормально, пока я не захотел использовать векторы в других классах, таких как CVector v;
и использовать v
потом.
ну, проблема лежит там — я бы использовал
struct Vector3_t {
float x, y , z;
};
но я хочу использовать операторы для этих векторов, поэтому я сделал класс:
class CVector
{
public:
//missing usage: CVector vec; // for later usage in example.
CVector() // usage: CVector v();
{
this->x = 0, this->y = 0, this->z = 0;
}
CVector(const float x = 0, const float y = 0) { // usage: CVector v(1,2); // but z is always 0
this->x = x, this->y = y,this->z = 0;
}
CVector(const float x = 0, const float y = 0, const float z = 0) { // usage: CVector v(1,2,3);
this->x = x, this->y = y, this->z = z;
}
CVector & CVector::operator += (const CVector & v) {
this->x += v.x; this->y += v.y; this->z += v.z; return *this;
}
const CVector CVector::operator + (const CVector& v) const {
CVector r(*this); return r += v;
}
float x, y, z;
~CVector() {};
protected:
private:
};
В бою:
int main() {
CVector vec;
return 0;
}
ошибки вывода:
Код серьезности Описание Состояние подавления строки файла проекта
Класс ошибки (активный) «CVector» содержит более одного конструктора по умолчанию: mebad c: Users lifesucks Documents Visual Studio 2015 Projects mebad mebad main.cpp 43
* Код серьезности Описание Состояние подавления строки файла проекта
Ошибка C2668 ‘CVector :: CVector’: неоднозначный вызов перегруженной функции mebad c: users lifesucks Documents visual studio 2015 projects mebad mebad main.cpp 43
*
в принципе, я просто не знаю, как объявить класс для такого рода использования при наличии нескольких конструкторов, и я не хочу использовать больше функций, таких как CVector :: constr1, которые будут использовать 3 float или что-то подобное, должен быть способ сделать это таким образом, я могу получить немного помощи? Спасибо!
-2
Решение
Проблема в том, что вы используете значения по умолчанию для аргументов двух конструкторов, это означает, что у вас есть три конструктора, которые можно вызывать без аргументов, так что должен вызывать компилятор?
Просто удалите значения аргументов по умолчанию, и это должно работать.
3
Другие решения
Ваш класс должен быть
class CVector
{
public:
CVector() : x(0), y(0), z(0) {}
CVector(float x) : x(x), y(0), z(0) {}
CVector(float x, float y) : x(x), y(y), z(0) {}
CVector(float x, float y, float z) : x(x), y(y), z(z) {}
//...
float x, y, z;
};
или же
class CVector
{
public:
CVector(float x = 0, float y = 0, float z = 0) : x(x), y(y), z(z) {}
//...
float x, y, z;
};
0
Йоахим Пилеборг отлично ответил на это и заслуживает очков.
Вот изменения кода, которые вы должны сделать:
CVector() // usage: CVector v();
{
this->x = 0, this->y = 0, this->z = 0;
}
CVector(const float x, const float y) { // usage: CVector v(1,2); // but z is always 0
this->x = x, this->y = y,this->z = 0;
}
CVector(const float x, const float y, const float z) { // usage: CVector v(1,2,3);
this->x = x, this->y = y, this->z = z;
}
0
I am trying to build a open source GitHub project https://github.com/castlabs/dashas . I have started to build this project on Ubuntu 17.04
with Gradle 1.1
.
I have tried to compile this project with gradle clean compile
command . I am getting following error during the build .
root@Z710:/home/Desktop/dashas-master# gradle clean compile
Download http://repo1.maven.org/maven2/org/gradlefx/gradlefx/1.3.2/gradlefx-1.3.2.pom
Download http://repo1.maven.org/maven2/org/codehaus/groovy/groovy-all/2.3.10/groovy-all-2.3.10.pom
Download http://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.pom
Download http://repo1.maven.org/maven2/org/apache/commons/commons-parent/17/commons-parent-17.pom
Download http://repo1.maven.org/maven2/org/apache/apache/7/apache-7.pom
Download http://repo1.maven.org/maven2/commons-io/commons-io/2.4/commons-io-2.4.pom
Download http://repo1.maven.org/maven2/org/apache/commons/commons-parent/25/commons-parent-25.pom
Download http://repo1.maven.org/maven2/org/apache/apache/9/apache-9.pom
Download http://repo1.maven.org/maven2/org/gradlefx/gradlefx/1.3.2/gradlefx-1.3.2.jar
Download http://repo1.maven.org/maven2/org/codehaus/groovy/groovy-all/2.3.10/groovy-all-2.3.10.jar
Download http://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar
Download http://repo1.maven.org/maven2/commons-io/commons-io/2.4/commons-io-2.4.jar
FAILURE: Build failed with an exception.
* Where:
Build file '/home/Desktop/dashas-master/build.gradle' line: 10
* What went wrong:
A problem occurred evaluating root project 'dashas-master'.
> the number of constructors during runtime and compile time for org.gradlefx.configuration.Configurations do not match. Expected -1 but got 1
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 1 mins 14.884 secs
And also i have tried to compile with --stacktrace
flag
root@Z710:/home/Desktop/dashas-master# gradle clean compile --stacktrace
FAILURE: Build failed with an exception.
* Where:
Build file '/home/Desktop/dashas-master/build.gradle' line: 10
* What went wrong:
A problem occurred evaluating root project 'dashas-master'.
> Failed to apply plugin [id 'gradlefx']
> Declaring custom 'build' task when using the standard Gradle lifecycle plugins is not allowed.
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'dashas-master'.
at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:92)
at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl$2.run(DefaultScriptPluginFactory.java:204)
at org.gradle.configuration.ProjectScriptTarget.addConfiguration(ProjectScriptTarget.java:77)
at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:209)
at org.gradle.configuration.BuildOperationScriptPlugin$1.run(BuildOperationScriptPlugin.java:61)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:58)
at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:41)
at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:26)
at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:34)
at org.gradle.configuration.project.LifecycleProjectEvaluator.doConfigure(LifecycleProjectEvaluator.java:64)
at org.gradle.configuration.project.LifecycleProjectEvaluator.access$100(LifecycleProjectEvaluator.java:34)
at org.gradle.configuration.project.LifecycleProjectEvaluator$ConfigureProject.run(LifecycleProjectEvaluator.java:110)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:50)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:667)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:136)
at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:60)
at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:38)
at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuild.run(DefaultGradleLauncher.java:249)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.initialization.DefaultGradleLauncher.configureBuild(DefaultGradleLauncher.java:167)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:126)
at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:109)
at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:78)
at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:75)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:152)
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:100)
at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:75)
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$1.run(RunAsBuildOperationBuildActionRunner.java:43)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40)
at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:49)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:32)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:57)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:32)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:64)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:29)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:45)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin [id 'gradlefx']
at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:150)
at org.gradle.api.internal.plugins.DefaultPluginManager.apply(DefaultPluginManager.java:125)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyType(DefaultObjectConfigurationAction.java:120)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$200(DefaultObjectConfigurationAction.java:38)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$3.run(DefaultObjectConfigurationAction.java:86)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:143)
at org.gradle.api.internal.project.AbstractPluginAware.apply(AbstractPluginAware.java:46)
at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.java:34)
at org.gradle.api.Script$apply$0.callCurrent(Unknown Source)
at build_9lygjcthh2pxm27ef0bcafga8.run(/home/Desktop/dashas-master/build.gradle:10)
at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:90)
... 93 more
Caused by: org.gradle.api.InvalidUserDataException: Declaring custom 'build' task when using the standard Gradle lifecycle plugins is not allowed.
at org.gradle.language.base.plugins.LifecycleBasePlugin$7.execute(LifecycleBasePlugin.java:142)
at org.gradle.language.base.plugins.LifecycleBasePlugin$7.execute(LifecycleBasePlugin.java:138)
at org.gradle.internal.ImmutableActionSet$CompositeSet.execute(ImmutableActionSet.java:196)
at org.gradle.internal.MutableActionSet.execute(MutableActionSet.java:35)
at org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:204)
at org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:198)
at org.gradle.api.internal.DefaultNamedDomainObjectCollection.add(DefaultNamedDomainObjectCollection.java:93)
at org.gradle.api.internal.tasks.DefaultTaskContainer.addTask(DefaultTaskContainer.java:101)
at org.gradle.api.internal.tasks.DefaultTaskContainer.create(DefaultTaskContainer.java:120)
at org.gradle.api.tasks.TaskContainer$create.call(Unknown Source)
at org.gradlefx.plugins.AbstractGradleFxPlugin.addTask(AbstractGradleFxPlugin.groovy:75)
at org.gradlefx.plugins.GradleFxPlugin.addTasks(GradleFxPlugin.groovy:47)
at org.gradlefx.plugins.AbstractGradleFxPlugin.apply(AbstractGradleFxPlugin.groovy:48)
at org.gradlefx.plugins.AbstractGradleFxPlugin.apply(AbstractGradleFxPlugin.groovy)
at org.gradle.api.internal.plugins.ImperativeOnlyPluginTarget.applyImperative(ImperativeOnlyPluginTarget.java:42)
at org.gradle.api.internal.plugins.RuleBasedPluginTarget.applyImperative(RuleBasedPluginTarget.java:50)
at org.gradle.api.internal.plugins.DefaultPluginManager.addPlugin(DefaultPluginManager.java:164)
at org.gradle.api.internal.plugins.DefaultPluginManager.access$200(DefaultPluginManager.java:47)
at org.gradle.api.internal.plugins.DefaultPluginManager$AddPluginBuildOperation.run(DefaultPluginManager.java:252)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:144)
... 103 more
I am getting error with the number of constructors during runtime and compile time for org.gradlefx.configuration.Configurations do not match
.
The project build.gradle
file contain following code :
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath group: 'org.gradlefx', name: 'gradlefx', version: '1.3.2'
}
}
apply plugin: 'gradlefx'
apply plugin: 'flashbuilder'
type = 'swf'
version = '1.0'
mainClass = 'com/castlabs/dash/DashPlugin.as'
output = 'dashas'
and also in my machine java --version
is 1.8
. Any suggestions or help would be helpful .
- Remove From My Forums
-
Вопрос
-
добрый день.
при создании приложения/игры
возник вопрос,а сколько вообще должно быть конструкторов в классе,
и как это может влиять на производительность приложения?
поясню, если у меня есть класс для какой то определенной
цели, я создаю один его конструктор с параметрами необходимыми
для заполнения полей класса ,стоит ли мне создавать варианты(перегруженные конструкторы)
или же обойтись одним по умолчанию и одним с нужным набором элементов?заранее благодарен за ответ.
Ответы
-
стоит мне в классе
держать несколько конструкторов ( про запас)
или же нет (ограничится только теми которые явно использую)
как это принято в мире ООП (есть какие нибудь «правила хорошего тона/кода»)?
заранее благодарен за ответ.Основные принципы, которыми следует руководствоваться:
DRY,
KISS, YAGNI.-
Помечено в качестве ответа
5 марта 2013 г. 15:41
-
Помечено в качестве ответа
-
Сделайте вот так, да и не переживайте
//////////// Constructors //////////// // overload cto'r // recieve as parameters: object's image, // image's height/width. // assign/define all properties. // create instances of timers define time intervals #region Overload Cto'r: public Player(string imagePath, double imageHeight, double imageWidth) public Player(string imagePath, double imageHeight, double imageWidth) : base(imagePath, imageHeight, imageWidth) { Initialize(); } #endregion // overload cto'r // recieve as parameters: object's image, image's height/width, path of expolosion sound. // assign/define all properties. // create instances of timers define time intervals #region Overload Cto'r: public Player(string imagePath, string explosionSoundPath, double imageHeight, double imageWidth) public Player(string imagePath, string explosionSoundPath, double imageHeight, double imageWidth) : base(imagePath, explosionSoundPath, imageHeight, imageWidth) { Initialize(); } #endregion // overload cto'r // recieve as parameters: // object's image, image's height/width, paths of expolosion/collision sounds. // assign/define all properties. // create instances of timers define time intervals #region Overload Cto'r: public Player(string imagePath, string explosionSoundPath, string collisionSoundPath, double imageHeight, double imageWidth) public Player(string imagePath, string explosionSoundPath, string collisionSoundPath, double imageHeight, double imageWidth) : base(imagePath, explosionSoundPath, collisionSoundPath, imageHeight, imageWidth) { Initialize(); } #endregion //////////// End Constructors \\\\\\ private void Initialize() { Lives = 3; Score = 0; Fuel = 3; _vulnerable = true; vulnerableTimer = new DispatcherTimer(); vulnerableTimer.Interval = TimeSpan.FromMilliseconds(2700); vulnerableTimer.Tick += new EventHandler(vulnerableTimer_Tick); fuelTimer = new DispatcherTimer(); fuelTimer.Interval = TimeSpan.FromSeconds(55); fuelTimer.Tick += new EventHandler(fuelTimer_Tick); }
-
Помечено в качестве ответа
Konrud
5 марта 2013 г. 15:41
-
Помечено в качестве ответа