标签: instantiation

如何从构造函数中确定类的内存分配地址?

是否有可能从该类的构造函数中获取新实例化的类的内存分配地址?
我正在开发一个链表,其中多个类有多个指向类的指针.每次新类实例化时,都需要检查其父级列表以确保它包含在内.

如果我尝试做这样的事情:

MyClass() // constructor
{
   extern MyClass * pParent;

   for ( int i = 0; i < max; i++ )
   {
      pParent->rels[i] == &MyClass; // error
   }
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

错误C2275:'namespace :: MyClass':非法使用此类型作为表达式

任何想法或建议将不胜感激.谢谢.

c++ class instantiation

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

使用EditTextPreference的子类时的InstantiationException

假设,我有一个EditTextPreference名为PasswordProtectedEditTextPreference 的子类.在通过EditTextPreference自己的对话框编辑首选项之前,该子类基本上显示了一个密码对话框.

现在我在相应的preferences.xml中定义首选项,如下所示:

<edu.myproject.pwprefs.PasswordProtectedEditTextPreference android:key="pref_password"
            android:title="@string/pref_password_title" android:summary="@string/pref_password_summary"
            android:dialogTitle="@string/pref_password_dialog_title" android:dialogMessage="@string/pref_password_dialog_message">
</edu.myproject.pwprefs.PasswordProtectedEditTextPreference>
Run Code Online (Sandbox Code Playgroud)

然后我PreferenceActivity通过调用在我的子类中应用preferences.xml

addPreferencesFromResource(R.xml.preferences);
Run Code Online (Sandbox Code Playgroud)

期间onCreate().这一切都可以正常使用Android 1.5.但是,当我使用更高版本的Android时,我会得到以下堆栈跟踪:

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{edu.myproject/edu.myproject.Preferences}: android.view.InflateException: Binary XML file line #25: Error inflating class java.lang.reflect.Constructor
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
     at android.app.ActivityThread.access$2300(ActivityThread.java:135)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136)
     at android.os.Handler.dispatchMessage(Handler.java:99)
     at android.os.Looper.loop(Looper.java:144)
     at android.app.ActivityThread.main(ActivityThread.java:4937)
     at java.lang.reflect.Method.invokeNative(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:521)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
     at dalvik.system.NativeStart.main(Native Method)
 Caused by: android.view.InflateException: Binary XML file line #25: Error inflating class java.lang.reflect.Constructor
     at …
Run Code Online (Sandbox Code Playgroud)

android exception instantiation inflate

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

在堆栈上实例化一个类,其中var在头文件中定义

我目前正在尝试编写适当的C++代码(让它运行对于一些小型原型来说是好的,但它很难看).

我最近意识到堆和堆实例化的区别(O m = new O()vs O m()).

现在我有一个类,其中头文件定义了一个变量,它保存了一个表定义.

ChunkLoader.hpp:

TablePartion*tablePartial_;

ChunkLoader.cpp:

ChunkLoader(){ta​​blePartial_ = new TablePartial(true,0,1); }

现在我想在堆栈上实例化tablePartial,但我不能使用: TablePartial tablePartial_(true, 0, 1);

我完全失明了?如何在堆栈上分配tablePartial_?或者我完全错了,我不能在构造函数中使用,因为它会在构造函数之后超出范围并因此被释放?但是因为我读到堆栈变量在性能方面更好,所以我想使用堆栈实例化(并获得红色delete).

主要原因:堆栈溢出告诉我尽可能摆脱指针.:)

c++ heap stack instantiation

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

Java问题使用字符串参数实例化对象

我正在尝试执行我的任务,但我遇到一个实例化具有String参数的对象的问题.当我编译并运行我到目前为止的应用程序时,它返回String值"Null"而不是我期望它.

这是我的抽象超类

public abstract class Book
{
//Declaration of class variable
private String title;
protected double price;

// contructor for Book class objects
public Book(String bookTitle)
    {
        bookTitle = title;
    }
//method that gets and returns books title
public String getTitle()
    {
        return title;
    }
//method that gets and returns books price
public double getPrice()
    {
        return price;
    }
//abstract method with no parameters
public abstract void setPrice();
}
Run Code Online (Sandbox Code Playgroud)

这是我的子类

public class Fiction extends Book
{
//subclass contructor
public Fiction(String …
Run Code Online (Sandbox Code Playgroud)

java string instantiation

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

使用Emit IL和内部类?

我有一个基类,它有一个嵌入式List,所有子类都可以使用它来返回一个已排序的集合.

我一直在使用Activator.CreateInstance(),但与简单的new()函数相比,这是比较慢的TERRBILY.

我找到了一种使用Emit IL的方法,几乎​​和new()一样快,但如果我的类不公开,我会收到MethodAccessException错误.这似乎很常见.

有没有解决的办法?

这里生成类的代码:http: //codeblocks.codeplex.com/wikipage?title = FastActivator%20Sample

代码与上面的代码一起使用:

public static List<T> SortedCollection<T>(SPListItemCollection items, ListSortType sortType, List<Vote> votes) where T : IVotable
{
    var returnlist = new List<T>();  
    var functionCreator = FastActivator.GenerateFunc<Func<SPListItem, List<Vote>, T>>();
    for (int i = 0; i < items.Count; i++) { returnlist.Add(functionCreator(items[i], votes)); }

    //Old code here
    //Type genericType = typeof(T);
    //for (int i = 0; i < items.Count; i++) { returnlist.Add((T)Activator.CreateInstance(genericType, new object[] { items[i], votes })); }

    switch …
Run Code Online (Sandbox Code Playgroud)

c# reflection performance reflection.emit instantiation

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

在泛型类实例化上创建了多少个实例?

考虑这样的课程:

class Foo<T>
{
   private T myField;
   public void Set(T x)
   {
      myField = x;
   }
}
Run Code Online (Sandbox Code Playgroud)

然后用T等于int,bool(值类型)和String,实例化它List.

如何创建实例化以及它们的外观?

我对Java和C#感兴趣.

从我读到的内容中,Java将创建一个基本类型的通用类,而在C#中将有两个类int,bool加上单个类String,List因为它们是引用值(这是真的吗?静态字段怎么样?).

c# java generics instantiation

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

是否可以动态加载类并将其用作类型?

我试图创建一个代码来动态加载一个类,并使用它来创建新的实例和运行强制转换.我可以使用这个方法从新加载的类中创建一个实例:myClass.newInstance();.但我不能用它作为一种类型.例如:myClass myObj = new myClass();它不起作用.有可能以某种方式执行吗?

这是我试图制作的代码:

URL classUrl;
classUrl = new URL("file:///C:/classes/");
URL[] classUrls = { classUrl };
URLClassLoader ucl = new URLClassLoader(classUrls);
Class c = ucl.loadClass("Operation");
Class MyIn = ucl.loadClass("MyInter"); 
Object o = c.newInstance(); //IT WORKS
System.out.println(((MyIn) o).sum(2, 4)); //IT DOES NOT WORK. Message: MyIn cannot be resolved to a type
Run Code Online (Sandbox Code Playgroud)

java instantiation classloader

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

误解了Java中的对象实例化

我有以下用于基元数组实例化的代码片段

int[] a = new int[] {10, 20, 30}
Run Code Online (Sandbox Code Playgroud)

是否可以对任何Object Array实例进行相同的操作?就像是 ..

 public class MyObject {
     int a;
     char b;
 }
Run Code Online (Sandbox Code Playgroud)

然后:

 public class Main(){
     public static void main(String[] args){
         MyObject[] = new MyObject[] { {10, 'a'}, {20, 'b'}}
     }
 }
Run Code Online (Sandbox Code Playgroud)

java arrays reference instantiation

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

C++实例化没有指针的另一个类构造函数中没有默认构造函数的对象

我有两个类,A类和B类.我不希望它们中的任何一个都有默认的构造函数,因为它们都需要用参数实例化.但是,我似乎无法在类B内部创建类A的对象,而不使用默认的公共构造函数,该构造函数允许在没有用户定义的值的情况下实例化类(尝试避免使用默认值).

这是我的设置:

我试图在其他类B中初始化的对象类:

ClassA.h

Class A  //No default constructor
{
public:
    A(int var1, int var2);    //Class A's Constructor
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个在实例化B类时实例化的对象实例,因为我需要传递给B类的值来实例化A类.

ClassB.h

Class B   //No default Constructor
{
public:
    A myClassA;    //The public variable in class B I want to hold an object of class A

    int somePublicVar;

    B(int var1, int var2, int var3);    //Class B's Constructor

}
Run Code Online (Sandbox Code Playgroud)

我似乎无法获得类型A的myClassA对象来实例化.

ClassB.cpp

B::B(int var1, int var2, int var3)
{
    B = A(var1, var2);
    somePublicVar = var3
}
Run Code Online (Sandbox Code Playgroud)

我是C++的新手,但我对C#和C非常熟悉.但我似乎无法找到正确的语法/过程来完成它.

我越是阅读与此问题相关的问题,使用指针实现这一点的越多似乎是解决此问题的"初学者"方式,因为对象需要手动销毁,所以我试图这样做而不用指针.可能吗?这个过程的最佳实践是什么?

如果我必须实现这一点,我将使用指针,但我也在努力解决这个问题,因为如果我将A定义为指针而不是对象,我在执行此操作时会收到错误:

myClassA =&A(var1,var2);

我得到"非标准扩展使用:使用类右值作为左值",因为我的理解是,"A(VAR1,VAR2)"的范围是构造函数和构造完成后都将被删除,因此我们无法保存指针它.所以我不确定在这种情况下如何利用指针方法. …

c++ constructor object instantiation

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

带有指针的C++显式构造函数

我最近偶然发现了一个接收单个指针参数的显式构造函数.我想知道在这种情况下是否需要显式关键字?因为没有指针的构造函数所以不能有任何隐式转换.

class Foo {
 public:
  explicit Foo(int* int_ptr);
}
Run Code Online (Sandbox Code Playgroud)

c++ instantiation explicit-conversion

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