标签: instantiation

甚至在创建该类之前声明一个对象

无论如何在C++中创建类之前声明一个类的对象?我问,因为我试图使用两个类,第一个需要在其中包含第二个类的实例,但第二个类还包含第一个类的实例.我意识到你可能认为我可能进入一个无限循环,但我实际上需要在第一个类之前创建第二个类的实例.

c++ class object instantiation

8
推荐指数
2
解决办法
8732
查看次数

在C#类中实例化泛型类型

C#中非常基本的问题,

class Data<T>
 {
    T obj;

    public Data()
    {
      // Allocate to obj from T here
      // Some Activator.CreateInstance() method ?
      obj =  ???
    }
 }
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

c# generics instantiation

8
推荐指数
1
解决办法
6361
查看次数

是否可以在Python中"动态"创建局部变量?

是否可以使用Python代码创建局部变量,只给出变量的名称(字符串),以便后续调用locals()中的"'xxx'"将返回True?

这是一个视觉:

>>> 'iWantAVariableWithThisName' in locals()
False
>>> junkVar = 'iWantAVariableWithThisName'
>>> (...some magical code...)
>>> 'iWantAVariableWithThisName' in locals()
True
Run Code Online (Sandbox Code Playgroud)

出于什么目的,我需要这个技巧完全是另一个话题......

谢谢您的帮助.

python memory variables local instantiation

8
推荐指数
2
解决办法
8164
查看次数

如何在Swift中从字符串实例化class和init?

我可以在ObjC中从string中实例化类.例如,我通过子类化UITableViewCell定义了新的DBCell类,并使用这些代码从name实例化类:

 DBCell *cell=[tableView dequeueReusableCellWithIdentifier:cellClassname];
    if (cell==nil) {
        Class cellClass=NSClassFromString(cellClassname);
        cell=[cellClass alloc];
        cell=[cell initWithStyle:cellStyle reuseIdentifier:cellClassname];
    }
Run Code Online (Sandbox Code Playgroud)

现在我需要将代码迁移到Swift,我在Swift中重新定义了DBCell类:

 class DBCell: UITableViewCell {
    var label:String?
    var key:String?
    var managedObject:NSManagedObject?
    var delegate:AnyObject?
    convenience override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
        self.init(style: style, reuseIdentifier: reuseIdentifier)
        self.textLabel.font=UIFont.preferredFontForTextStyle(UIFontTextStyleCaption1)
        self.backgroundColor=UIColor.blackColor()
        self.textLabel.backgroundColor=UIColor.blackColor()
    }
    }
Run Code Online (Sandbox Code Playgroud)

但是我如何实例化类并调用相应的init函数?

class instantiation swift

8
推荐指数
1
解决办法
4828
查看次数

PHP应用程序可能的循环依赖问题

我遇到了我认为是PHP应用程序的循环依赖问题.如果这不正确,请告诉我.情况如下:

两个类,LogManager和DBSession.

DBSession用于与数据库交互,LogManager用于记录文件.两者都广泛用于我的应用程序中.创建DBSession实例时,必须通过构造函数参数为其提供LogManager实例.这是因为DBSession有时会将信息记录到文件中,并将使用LogManager实例执行此操作.

现在,我想扩展LogManager,以便它也可以登录到数据库表,而不是文本文件.当然,我倾向于重复使用现有的课程,但我很快意识到这带来了一个有趣的情况.

DBSession已经需要一个LogManager实例来构造.如果我想在LogManager中重用DBSession类,它现在需要一个DBSession实例.我怎样才能满足这两个要求?显然,我的方法必定是错误的.

你怎么建议我解决这个问题?

先谢谢你,伙计们.

php oop dependencies instantiation circular-dependency

7
推荐指数
1
解决办法
1196
查看次数

你如何混合旧式和新式Python类?

我已经看过关于这个主题的几个问题,但我还没有找到明确的答案.

我想知道在新的Python代码库中使用旧式类的正确方法.比方说,例如,我有两个固定类,一个.如果我想要子类AB,并转换为新式类(A2B2),这是有效的.但是,如果我想从A2B2创建新的C类,则会出现问题.

因此,是否可以继续使用此方法,或者如果任何基类被定义为旧式,那么所有类都必须符合旧式吗?

请参阅示例代码以获得说明:

class A:
   def __init__(self):
      print 'class A'

class B:
   def __init__(self):
      print 'class B'

class A2(A,object):
   def __init__(self):
      super(A2, self).__init__()
      print 'class A2'

class B2(B,object):
   def __init__(self):
      super(B2, self).__init__()
      print 'class B2'

class C(A2, B2):
   def __init__(self):
      super(C,self).__init__()
      print 'class C'

A2()
print '---'
B2()
print '---'
C()
Run Code Online (Sandbox Code Playgroud)

这段代码的输出:

class A
class A2
---
class B
class B2 …
Run Code Online (Sandbox Code Playgroud)

python class instantiation multiple-inheritance

7
推荐指数
1
解决办法
4031
查看次数

使用Constructor参数动态创建Java类

我必须动态创建一个类,但我想使用类构造函数传递参数.

目前我的代码看起来像

Class<HsaInterface> _tempClass = (Class<HsaInterface>) Class.forName(hsaClass);
        _tempClass.getDeclaredConstructor(String.class);
        HsaInterface hsaAdapter = _tempClass.newInstance();
        hsaAdapter.executeRequestTxn(txnData);
Run Code Online (Sandbox Code Playgroud)

如何用参数调用构造函数?

java class dynamic instantiation

7
推荐指数
2
解决办法
2万
查看次数

在哪里建立新的域名实体?控制器,存储库或映射器?

假设对于每个域实体,我都有一个为数据映射器提供API的存储库.例如,如果我有一个UserEntity,那么我会有一个UserRepository与UserMapper说话,以便在数据库中保存用户数据.

现在,假设一个表单在网页上提交,我的控制器知道它需要根据提交的信息创建一个新的UserEntity.

可以:

  1. 在那里做新的UserEntity(),并根据提交的表单数据运行所有必要的setter方法,然后将UserEntity传递给repo,后者将传递给mapper进行插入?

    控制器创建UserEntity => Repo => Mapper => DB

  2. 将表单数据转换为数组,并将其传递给UserRepository,然后UserRepository运行新的UserEntity()和setter,并将其传递给mapper进行插入?

    控制器传递用户数据=> Repo创建UserEntity => Mapper => DB

  3. 将数组传递给UserRepository,UserRepository将数组传递给映射器以获取新的UserEntity和插入?

    控制器传递用户数据=> Repo传递用户数据=> Mapper创建UserEntity => DB

谁负责管理对象的创建?

php instantiation separation-of-concerns

7
推荐指数
1
解决办法
533
查看次数

导航抽屉 - 抽屉布局无法实例化

我正在尝试在我的应用程序中实现导航抽屉,但我遇到了严重问题.现在我的问题是我想将我的MainContent放在抽象布局中,如下所示:

<android.support.v4.widget.DrawerLayout
    android:id = "@+id/drawer_layout"
    xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    >

    <FrameLayout
      [...]
    </FrameLayout>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个错误代码

无法实例化以下类: - android.support.v4.widget.DrawerLayout(Open Class,Show Exception)

这些是例外细节:

java.lang.ClassNotFoundException: android.support.v4.widget.DrawerLayoutImpl
    at com.intellij.util.lang.UrlClassLoader.findClass(UrlClassLoader.java:148)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:642)
    at com.intellij.util.lang.UrlClassLoader._defineClass(UrlClassLoader.java:195)
    at com.intellij.util.lang.UrlClassLoader.defineClass(UrlClassLoader.java:191)
    at com.intellij.util.lang.UrlClassLoader.findClass(UrlClassLoader.java:152)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at com.android.tools.idea.rendering.RenderClassLoader.loadClassFromJar(RenderClassLoader.java:78)
    at org.jetbrains.android.uipreview.ProjectClassLoader.loadClassFromModuleOrDependency(ProjectClassLoader.java:108)
    at org.jetbrains.android.uipreview.ProjectClassLoader.load(ProjectClassLoader.java:89)
    at com.android.tools.idea.rendering.RenderClassLoader.findClass(RenderClassLoader.java:56)
    at org.jetbrains.android.uipreview.ProjectClassLoader.findClass(ProjectClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:173)
    at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:96)
    at com.android.tools.idea.rendering.LayoutlibCallback.loadView(LayoutlibCallback.java:172)
    at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:132)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:482)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
    at …
Run Code Online (Sandbox Code Playgroud)

java android instantiation navigation-drawer

7
推荐指数
1
解决办法
8663
查看次数

检查C ++模板值零失败

我正在探索将常量表达式与C ++中的模板结合使用的过程,但遇到了一个我无法理解的问题。

我想检查模板参数的值(在我的情况下为unsigned int)是否为零,但是即使我有一个static_assert确认它已经实际传递到零以下,编译器也从未认为该值为零。

我正在实现一个简单的(或至少我这么认为)模板函数,该函数应该只汇总从5到零的范围内的所有整数值。

它应该对模板函数执行递归调用,直到达到零为止,然后应该停止,但是编译器从不认为模板参数值为零。

这是我有问题的功能:

    template <unsigned int Value>
    constexpr unsigned int sumAllValues()
    {
        static_assert (Value >= 0, "Value is less than zero!");
        return Value == 0 ? 0 : Value + sumAllValues<Value - 1>();
    }
Run Code Online (Sandbox Code Playgroud)

它的调用方式如下:

    constexpr unsigned int sumVals = sumAllValues<5>();
Run Code Online (Sandbox Code Playgroud)

由于某种原因,编译器从不认为Value == 0,因此它会一直持续到在static_assert上停止为止。如果删除断言,则编译器将继续执行直到达到最大实例化深度:

错误:模板实例化深度超过最大值900(使用-ftemplate-depth =增加最大值)返回值== 0?0:值+ sumAllValues();

我在上述功能中做错了什么?我不能检查模板参数本身的值吗?

我在Wikipedia上发现的一个例子启发了我:

    template<int B, int N>
    struct Pow
    {
        // recursive call and recombination.
        enum{ value = B*Pow<B, N-1>::value };
    };

    template< int B >
    struct Pow<B, 0> …
Run Code Online (Sandbox Code Playgroud)

c++ recursion templates instantiation

7
推荐指数
1
解决办法
130
查看次数