好吧,这可能看起来像一个愚蠢的问题,但它在这里:
template <typename T>
void foo(T& x)
{
}
int main()
{
foo(42);
// error in passing argument 1 of 'void foo(T&) [with T = int]'
}
Run Code Online (Sandbox Code Playgroud)
是什么阻止C++实例化实例化foo函数模板T = const int?
可能我的问题很简单,但我之前从未使用过应用程序范围bean.我需要应用程序bean,因为我必须花时间在数据库上进行事务处理.我的搜索根本不能满足我的好奇心.我不知道为什么,但我没有设法初始化bean(它是null)或应用程序崩溃.所以我有一个应用程序范围bean
@ManagedBean(eager=true)
@ApplicationScoped
public class ApplicationContainer {
...
}
Run Code Online (Sandbox Code Playgroud)
eager = true我读过,告诉JSF每次启动应用程序服务器(我使用GlassFish)时都会启动bean.
我在几个地方读过,我只需要把这个注释和bean初始化.对我来说它不...我读了之后如果我想将应用程序bean注入另一个bean我必须使用@PostConstuct注释
@ManagedBean
@SessionScoped
public class TestsBean implements Serializable {
private static final long serialVersionUID = 1L;
@ManagedProperty(value = "#{container}")
private ApplicationContainer container;
@PostConstruct
public void init() {
container.contructContainer();
}
Run Code Online (Sandbox Code Playgroud)
这给我将其注入TestsBean的其他bean中的错误...
请告诉我处理应用程序bean的正确方法.我真的很困惑......
谢谢大家的时间!
假设我有这段代码:
class Animal {
int legs = 4;
int head = 1;
}
public class Dog extends Animal {
public static void main (String []args) {
Dog dog = new Dog();
}
}
Run Code Online (Sandbox Code Playgroud)
我知道super()隐式置于no-args构造函数的第一行,所以我知道Animal构造函数将被执行,因此Animal将设置实例变量.
为了这个目的,我想,了解如果一旦这些变量已经被超级构造函数(初始化Animal),这些实例变量会在动物对象有保留或复制到子类(Dog).
在第一种情况下,对象Animal将被隐式实例化,super();并且每当实例Dog需要访问其中一个变量时,它将访问实例中保存的变量Animal(在后台创建).或者第二种情况,如果对象Animal将被临时创建,则将所有实例变量(in Animal)复制到Dog实例,然后删除Animal临时创建的实例.
我个人认为,例如,一个Dog对象将直接链接到一个Animal直接连接到一个对象的对象.
是这样的吗?
我是编程新手,我想知道在实例化对象时我出错了.以下是代码:
public class Testing{
private int Sample(int c)
{
int a = 1;
int b = 2;
c = a + b;
return c;
}
public static void main(String []args)
{
Sample myTest = new Sample();
System.out.println(c);
}
}
Run Code Online (Sandbox Code Playgroud) 考虑以下课程:
template <class T>
class object {
public:
using type = T;
object() = delete;
object(const object&) = delete;
object(object&&) = delete;
object& operator=(const object&) = delete;
object& operator=(object&&) = delete;
~object() = delete;
private:
type value = 0;
};
Run Code Online (Sandbox Code Playgroud)
是否有可能object<int>通过任何奇怪的诡计来实例化一个对象(在堆栈上(可能不是)或在堆上(可能是?)),或者它是否不可能以object<int>任何可想象的形式存在(形式良好且定义明确)行为)C++17计划?
附录:首先我们考虑非格式的NDR程序/非未定义的行为.当且仅当可能存在形式错误的NDR程序/未定义的行为程序时,您可以用这样的程序说明答案.
是否使用新的(或不同的)TestCase对象实例来运行JUnit测试用例中的每个测试方法?或者一个实例重用于所有测试?
public class MyTest extends TestCase {
public void testSomething() { ... }
public void testSomethingElse() { ... }
}
Run Code Online (Sandbox Code Playgroud)
在运行此测试时,MyTest会创建多少个类实例?
如果可能,请提供指向我可以验证行为的文档或源代码的链接.
在java中,我可以编写这样的代码
Boolean b = true ;
Run Code Online (Sandbox Code Playgroud)
它会奏效.我现在有一个保持值为"true"的对象.
这是如何运作的?为什么我不必通过构造函数传递值?像这样:
Boolean b = new Boolean( true ) ;
Run Code Online (Sandbox Code Playgroud)
另外,我可以制作可以以类似方式实例化的自定义类吗?如果是这样的话叫什么?
这样我就可以这样做:
Foobar foobar = "Test" ;
Run Code Online (Sandbox Code Playgroud)
因此有我自己的包装类.
谢谢
我经常会收到一些关于"使用'new'表达式创建的未分配对象"的resharper警告.以下代码剪断将演示以下情况:
我正在使用一个帮助器类(Observer.cs)来监视来自另一个类(MonitoredClass.cs)的一些属性.当属性更改时,观察者类将更改的值写入另一个数据类(DataClass.cs).
剪切的简化代码:
MonitoredClass.cs:
public class MonitoredClass : INotifyPropertyChanged
{
// simplified: in fact property calls OnPropertyChange(..)
public string Property1 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
DataClass.cs:
public class DataClass
{
public string LastProperty1Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Observer.cs:
public class Observer
{
private MonitoredClass _monitoredClass;
private DataClass _dataClass;
public Observer(MonitoredClass monitoredClass, DataClass dataClass)
{
_monitoredClass = monitoredClass;
_dataClass = dataClass;
_monitoredClass.PropertyChanged+=MonitoredClassPropertyChanged;
}
private void MonitoredClassPropertyChanged(..)
{
_dataClass.LastProperty1Value = _monitoredClass.Property1;
}
}
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.
如果我现在使用上面的Observer类,如下所示: …
问题
我想在Haskell中模拟一个多值输出函数.生成Haskell代码(不是手写的) - 这是重要的信息,见下文:
这当然可以通过从函数返回元组来轻松完成,比如
f x y = (x+y, x-y)
Run Code Online (Sandbox Code Playgroud)
但是当使用这样的函数时,我必须知道它返回什么样的元组:
...
(out_f_1, out_f_2) = f a b
(out_g_1, out_g_2, out_g_3) = g out_f_1
...
Run Code Online (Sandbox Code Playgroud)
等等...但是在生成代码时,我不知道f的输出类型是什么,所以现在我正在使用Data.List.Select包并模拟上面的代码:
import Data.List.Select
...
out_f = f a b
out_g = g (sel1 outf)
...
Run Code Online (Sandbox Code Playgroud)
问题是性能 - 在我的测试程序中,使用Data.List.Select的版本比手工编写的版本慢两倍.
这是非常明显的情况,因为Data.List.Select是使用classes和编写的instances,所以它使用某种运行时字典(如果我没错).(http://hackage.haskell.org/packages/archive/tuple/0.2.0.1/doc/html/src/Data-Tuple-Select.html#sel1)
问题
我想问你是否有可能以某种方式编译版本(使用Data.List.Select)与手工制作的版本一样快?
我认为应该转换到编译器,这将告诉他"实例化"每次使用的类和接口(类似于C++中的模板).
基准
Test1.hs:
import qualified Data.Vector as V
import System.Environment
b :: Int -> Int
b x = x …Run Code Online (Sandbox Code Playgroud) 我有一个名为的抽象数据库类:
abstract class database {
protected $value;
}
Run Code Online (Sandbox Code Playgroud)
我创建了另一个抽象类
abstract class my_database extends database {
public function set_value($value) {
$this->value = $value;
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用它时:
$my_db = new my_database();
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Fatal error: Cannot instantiate abstract class my_database in ...
Run Code Online (Sandbox Code Playgroud)
我尝试做的是:抽象类数据库有一个受保护的$值,我想创建一个包装类,以便能够(临时)更改受保护的值.
我怎样才能做到这一点?
EDIT1:不幸的是之前,当我尝试没有抽象my_database时,我得到了错误:
- abstract methods and must therefore be declared abstract or implemented
- Abstract function cannot contain body
Run Code Online (Sandbox Code Playgroud)
EDIT2:从my_database中完全取出抽象词后,我收到以下错误:
致命错误:类my_database包含32个抽象方法,因此必须声明为abstract或实现其余方法
我怎样才能解决这个问题?
instantiation ×10
java ×4
c++ ×2
autoboxing ×1
benchmarking ×1
c# ×1
c++17 ×1
casting ×1
const ×1
haskell ×1
inheritance ×1
jsf ×1
junit ×1
object ×1
performance ×1
php ×1
reference ×1
resharper ×1
scope ×1
templates ×1
testcase ×1
tuples ×1