我不确定如何描述这个问题,但是这里有.我有一个在SQLite数据库中映射的对象的类层次结构.我已经编写了所有在.NET对象和数据库之间进行通信的非平凡代码.
我有一个基本界面如下:
public interface IBackendObject
{
void Read(int id);
void Refresh();
void Save();
void Delete();
}
Run Code Online (Sandbox Code Playgroud)
这是任何对象的基本CRUD操作.然后我实现了一个封装了大部分功能的基类.
public abstract class ABackendObject : IBackendObject
{
protected ABackendObject() { } // constructor used to instantiate new objects
protected ABackendObject(int id) { Read(id); } // constructor used to load object
public void Read(int id) { ... } // implemented here is the DB code
}
Run Code Online (Sandbox Code Playgroud)
现在,最后,我有了具体的子对象,每个对象在数据库中都有自己的表:
public class ChildObject : ABackendObject
{
public ChildObject() : base() { }
public ChildObject(int id) : base(id) …Run Code Online (Sandbox Code Playgroud) 我有两个不同的模板类.其中一个具有成员函数,该函数返回指向另一个模板类的对象的指针.目前,我无法编译下面的代码,我们非常欢迎任何建议.
#include <stdio.h>
#include <stdlib.h>
#include <foo.h>
#include <bar.h>
int main(int argc, char **argv){
...
int nParam;
...
CFoo<float> * pFoo = NULL;
pFoo = new CFoo<float>();
CBar<float> * pBar = NULL;
pBar = pFoo->doSomething(nParam); // error: no matching function for call to ‘CFoo<float>::doSomething(int)’
...
delete pFoo;
delete pBar;
return (0);
}
Run Code Online (Sandbox Code Playgroud)
#include <bar.h>
template < class FOO_TYPE >
class CFoo{
public:
...
template < class BAR_TYPE >
CBar<BAR_TYPE> * doSomething(int);
...
};
Run Code Online (Sandbox Code Playgroud)
template < class FOO_TYPE …Run Code Online (Sandbox Code Playgroud) 场景:
如何根据用户输入的字符串创建ListLayout对象?我需要等同于这样做:
CustomLayout layout = new ListLayout();
Run Code Online (Sandbox Code Playgroud)
理想情况下,我需要找到一个解决方案,它允许我检查输入的String是否对应于在实际创建对象之前实现CustomLayout的预定义类(因为如果它不存在则会抛出错误而我不检查预先).
这真让我思考......提前感谢您的帮助
好吧,所以我最近深入研究了C++并且我已经把所有东西都搞砸了.指针最终开始有意义,直到我应该使用它们,如何正确实现它们等.
然而,有一个关于指针的基本用法的一个小问题,我仍然需要回答.我会直接跳到代码:
具有以下类别A和功能foo(A* bar)......
class A
{}
void foo(A* bar)
{}
Run Code Online (Sandbox Code Playgroud)
......以下电话之间有什么区别foo?
A* a;
A b;
foo(a);
foo(&b);
Run Code Online (Sandbox Code Playgroud)
他们都编译得很好,据我所知,我没有遇到任何问题.
我认为那A b;是在那里实例化的,而A* a;需要创建new(因为它实际上没有创建对象,它只是对潜在A对象进行了4字节的长引用).
我可以,如果我正确地考虑这个,做a = b;(编辑制作a = &b),然后成功传递a给foo.但是,如果我不这样做a = &b并foo尝试读取指向的(不存在的)对象a,则会导致运行时错误.
此外,如果以上是正确的,那么我认为我可以成功通话foo(&b);.
我对么?
谢谢!
这有效:
MyObject *o;
o = new MyObject();
Run Code Online (Sandbox Code Playgroud)
而这不是:
MyObject o = new MyObject();
Run Code Online (Sandbox Code Playgroud)
为什么?
在下面的代码中,我得到了java.lang.InstantiationException
(下面是编译独立编译的代码 - 在我的应用程序中,我想维护一个Enum-> Class map,并在从文件读取整数值时,实例化查看地图的相应类).
如何摆脱这个错误?有语法问题吗?我必须使用接口吗?我在这里的理解是有限的.
class Main {
abstract class Base {
Base() {};
void print() {
System.out.println("I am in Base");
}
}
class D1 extends Base {
D1() {};
@Override
void print() {
System.out.println("I am in D1");
}
}
static Class<? extends Base> getMyClass() {
return D1.class;
}
public static void main(String[] args) {
try {
Class<?> cc = getMyClass();
Object oo = cc.newInstance();
Base bb = (Base) oo;
bb.print();
} catch (Exception ee) {
System.out.println(ee);
}; …Run Code Online (Sandbox Code Playgroud) 我对这个流口水的工作人员全新.因此,我在这里遇到一些麻烦.
rule "Raise the alarm when we have one or more fires"
when
exists Fire()
then
insert( new Alarm() );
end
Run Code Online (Sandbox Code Playgroud)
当我有这个代码它工作正常.但我想改变这一点:
rule "Raise the alarm when we have one or more fires"
when
exists Fire()
then
$alarm = new Alarm();
$alarm.RingBell();
insert( $alarm );
end
Run Code Online (Sandbox Code Playgroud)
可能你明白我在这里想做什么.我想实例化Alarm类并激活它的RingBell方法.但它给了我这个错误
Rule Compilation error : [Rule name='Raise the alarm when we have one or more fires']
com/sample/Rule_Raise_the_alarm_when_we_have_one_or_more_fires_cd7449c70a6a48c78f4e291495d23b05.java (8:436) : alarm cannot be resolved
java.lang.IllegalArgumentException: Could not parse knowledge.
at com.sample.DroolsTest.readKnowledgeBase(DroolsTest.java:117)
at com.sample.DroolsTest.main(DroolsTest.java:28)
Run Code Online (Sandbox Code Playgroud)
如果你们帮助我,我会很感激:))
private decimal? _income;
public SomeClassName()
{
// First way
_income = new decimal(45000.75)
// Second way
_income = Convert.ToDecimal(45000.75)
}
Run Code Online (Sandbox Code Playgroud)
以上哪两种实例更好?为什么?
Resharper显示此警告:当我编写以下代码时,"在任何执行路径中都没有使用赋值":
List<obj> testObj = new List<obj>();
testObj = testMethod();
Run Code Online (Sandbox Code Playgroud)
这里testMethod()返回类型List<obj>.但是,当我直接分配testMethod()没有实例化它时,我没有得到警告.
List<obj> testObj = testMethod();
Run Code Online (Sandbox Code Playgroud)
请原谅我的无知,如果我错过了基础知识,但我没有关注编译器如何在testObj没有实例化的情况下分配内存.
其中一个帖子提到了类似的问题:C#这个初始化器真的是多余的吗?但是我没有找到任何关于我的问题的答案,关于testObj变量存储它收到的值的位置testMethod?与原始数据类型不同,"对象类型"只有在实例化后才能存储值.如果我错过了什么,请告诉我.
我不知道它之前是否被询问(我搜索但找不到)
以下2个代码块之间有什么区别吗?
1:
// Let's say we want to get variable from non-static object
Object a = new Object();
int varWeWant = a.getVariable();
Run Code Online (Sandbox Code Playgroud)
2:
int varWeWant = new Object().getVariable();
Run Code Online (Sandbox Code Playgroud)
如你所见,第二个选项是单行代码,我知道java,两个代码首先创建对象并通过方法检索变量,但我不是java专家,所以我想知道他们是否有任何差异?
对不起,如果这是一个愚蠢的问题:D我只是想知道这个问题太久了
感谢名单