我想知道是否有一种方法链接PHP中新创build的对象的方法? 就像是: class Foo { public function xyz() { … return $this; } } $my_foo = new Foo()->xyz(); 任何人都知道一个方法来实现这一目标?
我有一组构造函数和一个赋值运算符。 class B { public: B(); B(const string & s); B(const B & b){(*this) = b;}; B & operator= (const B & b); private: virtual void foo(); // and other private member variables and functions } 我想创build一个只会覆盖函数foo()的inheritance类D,不需要其他更改。 但我想要D具有相同的一组构造函数,包括复制构造函数和赋值运算符为B: D(const D & d){(*this) = d;}; D & operator= (const D & d); 我是否必须在D中重写它们,还是有办法使用B的构造函数和操作符? 我特别想避免重写赋值运算符,因为它必须访问所有B的私有成员variables。
我正在和同事讨论有关从构造函数中抛出exception的问题,我想我想得到一些反馈。 从devise的angular度来看,从构造函数中抛出exception是可以的? 假设我在课堂上包装了一个posix互斥体,它看起来像这样: class Mutex { public: Mutex() { if (pthread_mutex_init(&mutex_, 0) != 0) { throw MutexInitException(); } } ~Mutex() { pthread_mutex_destroy(&mutex_); } void lock() { if (pthread_mutex_lock(&mutex_) != 0) { throw MutexLockException(); } } void unlock() { if (pthread_mutex_unlock(&mutex_) != 0) { throw MutexUnlockException(); } } private: pthread_mutex_t mutex_; }; 我的问题是,这是做这件事的标准方法吗? 因为如果pthread mutex_init调用失败,互斥对象不可用,所以抛出exception可确保不会创build互斥锁。 我应该为Mutex类创build一个成员函数init,然后调用pthread […]
我正在尝试将一个DAO作为托pipe属性注入。 public class UserInfoBean { private User user; @ManagedProperty("#{userDAO}") private UserDAO dao; public UserInfoBean() { this.user = dao.getUserByEmail("test@gmail.com"); } // Getters and setters. } DAO对象是在创buildbean之后注入的,但在构造函数中是null的,因此引起NullPointerException 。 我怎样才能使用注入托pipe属性初始化托pipe的bean?
我在java中编写了这个简单的类来testing它的一些特性。 public class class1 { public static Integer value=0; public class1() { da(); } public int da() { class1.value=class1.value+1; return 5; } public static void main(String[] args) { class1 h = new class1(); class1 h2 = new class1(); System.out.println(class1.value); } } 输出是: 2 但是在这个代码中: public class class1 { public static Integer value=0; public void class1() […]
在C#中,您可以对generics方法施加约束: public class A { public static void Method<T> (T a) where T : new() { //…do something… } } 你指定T应该有一个不需要参数的构造函数。 我想知道是否有一种方法来添加一个约束,如“ 存在一个float[,]参数的构造函数? 下面的代码不能编译: public class A { public static void Method<T> (T a) where T : new(float[,] u) { //…do something… } } 解决方法也是有用的?
在这里读到关于转换运算符和构造函数的一些问题,让我想起了它们之间的相互作用,即当有一个“模糊”的调用时。 考虑下面的代码: class A; class B { public: B(){} B(const A&) //conversion constructor { cout << "called B's conversion constructor" << endl; } }; class A { public: operator B() //conversion operator { cout << "called A's conversion operator" << endl; return B(); } }; int main() { B b = A(); //what should be […]
我通常很想在less数情况下使用“混蛋注射”。 当我有一个“适当的”dependency injection构造函数: public class ThingMaker { … public ThingMaker(IThingSource source){ _source = source; } 但是,对于我打算作为公共API (其他开发团队将使用的类)的类,我永远不会find一个更好的select,而不是写一个具有最可能需要的依赖性的默认“混蛋”构造函数: public ThingMaker() : this(new DefaultThingSource()) {} … } 这里明显的缺点是这会在DefaultThingSource上创build一个静态依赖关系; 理想情况下,不会有这样的依赖,消费者总是会注入他们想要的任何IThingSource。 但是,这太难使用了; 消费者希望创造一个ThingMaker并开始制作东西,然后在需要时再注入其他东西。 在我看来,这只剩下几个选项: 省略混蛋构造函数; 强迫ThingMaker的用户了解IThingSource,了解ThingMaker如何与IThingSource交互,查找或编写具体类,然后在构造函数调用中注入实例。 省略混蛋构造函数,并提供单独的工厂,容器或其他引导类/方法; 不知何故使消费者明白,他们不需要编写自己的IThingSource; 强迫ThingMaker的用户find并理解工厂或引导程序并使用它。 保持混蛋的构造函数,使消费者“新build”一个对象并运行,并应对DefaultThingSource上的可选静态依赖。 男孩,#3肯定看起来很有吸引力。 还有更好的select吗? #1或#2似乎不值得。
在C ++ 11中,inheritance构造函数是什么意思? 如果这是我认为的(基类构造函数被引入派生类的范围),它对我的代码有什么影响? 这个function有什么用途?
我有一个大脑痉挛…如何在C ++中正确初始化一个对象数组? 非数组示例: struct Foo { Foo(int x) { /* … */ } }; struct Bar { Foo foo; Bar() : foo(4) {} }; 数组示例: struct Foo { Foo(int x) { /* … */ } }; struct Baz { Foo foo[3]; // ??? I know the following syntax is wrong, but what's correct? Baz() : […]