С ошибка с количеством конструкторов

Необходимо написать функцию 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

fedor-sg's user avatar

Потому что при вызове Coord& operator = (Coord obj) происходит копирование объекта, а Вы не переопределили коструктор копирования, следовательно компилятор сам его сгенерировал. Можно это исправить(не вызывать конструктор копирования) передавая obj по ссылке, либо же добавить конструктор копирования:

Coord(const Coord& rhs)
{
    std::cout << "Copy constructor is run" << std::endl;
}

ответ дан 19 мар 2016 в 10:50

ixSci's user avatar

ixSciixSci

23.7k3 золотых знака46 серебряных знаков61 бронзовый знак

Никакой ошибки нет, при вызове Get срабатывает неявно определенный конструктор копирования, для которого нет логирования.

ответ дан 19 мар 2016 в 10:47

Abyx's user avatar

AbyxAbyx

30.9k13 золотых знаков96 серебряных знаков155 бронзовых знаков

Как уже было сказано в других ответах: проблема кроется в отсутствии определения пользовательской реализации конструктора копирования.

На этот счет в C++ с незапамятных времен существует так называемое «Правило трёх», гласящее, что если класс или структура определяет один из следующих методов, то они должны явным образом определить все три метода:

  • Деструктор
  • Конструктор копирования
  • Оператор присваивания копированием

Помимо этого несколько рекомендаций по коду:

  • Повторная установка значений для x,y не требуется, т.к. уже выполняется в инициализаторе конструктора.
  • Функции-члены, не изменяющие видимого состояние объекта (Show, Get), следует объявлять с ключевым словом const:

    Coord Get() const;
    
  • Передачу аргумента в оператор копирующего присваивания в каноническом варианте следует осуществлять по константной ссылке const Coord& obj. В общем случае, возможен вариант и передачи по значению, например, при реализации идиомы «copy-and-swap».

ответ дан 20 мар 2016 в 7:50

αλεχολυτ's user avatar

αλεχολυταλεχολυτ

28.4k10 золотых знаков57 серебряных знаков118 бронзовых знаков

Студворк — интернет-сервис помощи студентам

Имеется класс:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class ControlObject
{
private:
    string productsFilename;
    ofstream fout;
    ifstream fin;
    bool isOpenFile;
    bool isEmptyFile;
public:
    ControlObject();
    ControlObject(const string& nm = FILENAME_PRODUCTS);
    bool addObject(Food obj);
    Food findObject(const std::string& name);
    bool isFileEmpty();
};

Отдельно даю определения других методов и конструкторов ( в этом же файле ).
При создании экземпляра класса жалуется на то, что класс имеет больше одного конструктора по умолчанию. Но если добавить скобки — предупреждение убирается. Появилось после установки MSVS 2013.

C++
1
2
ControlObject a; // предупреждение
ControlObject b(); // предупреждения нет

Вот вывод при компиляции:

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.gradlefile 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

Возможно, вам также будет интересно:

  • С ошибка при выделении памяти для
  • С ошибка недопустимые данные 0xd
  • С оттепелью придут для нас главные заботы ошибка
  • С окончанием футбольного матча количество звонков должно активизироваться ошибка
  • С обоями сестрами найди ошибку

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии