只是想知道你是否能够帮我解决我的问题.这可能是因为我不知道要搜索的正确关键字.
这不是家庭作业,只是匿名......
我有一个接口和一堆实现类:
interface Fruit
Banana implements Fruit
Apple implements Fruit
....
Run Code Online (Sandbox Code Playgroud)
我有一个水果实用程序类.在这是一个方法,采取任何种类的水果切片.
public static Fruit[] slice(Fruit f, int pieces)
Run Code Online (Sandbox Code Playgroud)
如何声明Fruit数组与我传递给方法的Fruit类型相同?
即我如何自动化:
Fruit[] a = new Apple[pieces];
Run Code Online (Sandbox Code Playgroud)
如果我给它一个苹果?
.
编辑:澄清
我会有这样的代码:
Fruit a = new Apple();
Fruit b = new Banana();
Fruit[] slices1 = FruitUtil.slice(a, 3); //slices1 should be an Apple
Fruit[] slices2 = FruitUtil.slice(b, 3); //slices2 should be a Banana
Fruit newApple = FruitUtil.copy(a); //newApple should be an Apple
Run Code Online (Sandbox Code Playgroud)
我如何编写切片(Fruit f,int slice)或copy(Fruit f)方法,以便创建与我在参数中传递的相同类型的Fruit(不必为每种类型覆盖方法,或者执行instanceof检查) )
每当我在后面的代码中创建一个UIElement时,我会做这样的事情:
Button button = new Button();
button.Content = "Click Me!";
Run Code Online (Sandbox Code Playgroud)
但后来我在某处看到了这种语法,想知道它叫什么.我从来没有在任何.NET书籍中看到过它:
Button button = new Button { Content="Click Me!" };
Run Code Online (Sandbox Code Playgroud)
这显然很好,因为它简洁.所以我想我的问题是:
我也很难找到设置CornerRadius和StrokeThickness等属性的正确方法,并认为#1的答案可能会帮助我进行更智能的搜索查询.
除非我为我创作和使用的每个模板化类/方法/函数都包含显式模板实例,否则我的任何一个C++项目都会生成链接器错误.
STL课程似乎没有这样的问题.
是否有一些简单的行为准则(双关语)我可以坚持哪些允许像STL那样的延迟实例化?
谢谢收听.
是否有可能在以下设置中
template <typename T>
inline void id() {
//...
}
template <typename T>
bool check() {
return &id<T> == &id<T const>;
}
Run Code Online (Sandbox Code Playgroud)
check会回来true一些T吗?它取决于内部的工作id吗?标准对此有何看法?
这是一个非常基本的php问题:假设我有3个文件,file1,file2,file3.
在file1中,我声明了一个名为Object的类.在file2中,我有一个实例化Object的方法,将其称为$ object,并调用此方法Method
在file2中,此方法看起来像
public function Method(){
$object = new Object;
...
require_once(file3);
$anotherobject = new AnotherObject;
$anotherobject->method();
}
Run Code Online (Sandbox Code Playgroud)
最后,在文件3中,我声明了另一个AnotherObject.那么,如果我在file3中有一个方法'method',我可以直接引用$ object的属性,还是可以访问Object的静态方法?
我正在尝试通过变量实例化一个类(Laravel3 Eloquent模型),并且出现一个错误,提示找不到该类。
但是,当我对类名进行硬编码时,它就可以正常工作。
(仅供参考,下面的代码$contact_type应为电话,传真或电子邮件。)
这是我目前正在玩的游戏:
foreach( $input AS $contact_type => $contact_info )
{
foreach( $contact_info AS $data )
{
$obj = new $contact_type( (array)$data);
echo'<pre>Obj: ',print_r($obj),'</pre>'; // <----- For Testing
}
}
Run Code Online (Sandbox Code Playgroud)
当我如上所述运行代码时,它将引发“找不到类'Phone'”错误。
当我替换new $contact_type()为new Phone()(或传真或电子邮件)时,它可以正常工作。
我敢打赌,有一些简单的事情我正在查看:)我想念的是什么?
请帮忙!
我试图正确理解如何使用泛型.我一直在搜索它,但是当教程开始添加多个通用值,或者使用非常抽象的术语时,我会感到困惑.
我还在学习,所以欢迎任何一般建议,但我想具体弄清楚返回泛型类的方法的语法.
例如考虑:
public class GenericsExample4 {
public static void main(String args[]) {
Car car;
Truck truck;
car = buy(Car.class, 95);
truck = buy(Truck.class, 45);
}
// HELP HERE!
public static <T extends Vehicle> T buy(Class<T> type, int topSpeed) {
// create a new dynamic class T . . . I am lost on syntax
return null; // return the new class T. I am lost on the syntax here :(
}
}
interface Vehicle {
public void floorIt();
} …Run Code Online (Sandbox Code Playgroud) 简短版本:正在使用一个类而没有实例化它的类型的变量.怎么样?
我有一个巨大的遗留程序,从VB6转换为VB.net.它正在编译并且许多方面都有效,但是存在与MDI(多文档界面)显示相关的问题.我已将其他测试表单放在父MDI表单下,并且它们正确显示.有问题的表格不会显示.(而且,当然,它是最重要的,也是最复杂的形式.我希望我可以重写它,但是没有可能.)
有一个类MDI1,在许多其他类的代码中使用了7000多次.MDI1类以不显示的形式广泛使用.无论在何处使用MDI1,它总是简称为MDI1或Namespace.MDI1.据我所知,它永远不会被实例化为一个对象.就好像它是一个单身人士,不知何故,但我看不出任何东西使它成为一个.
该类的标题如下:
Option Strict Off
Option Explicit On
Imports VB = Microsoft.VisualBasic
Friend Class MDI1
Inherits System.Windows.Forms.Form
Dim MDI_Activated As Boolean
Public Sub New()
MyBase.New()
InitializeComponent_Renamed()
End Sub
...
Run Code Online (Sandbox Code Playgroud)
谁能告诉我这里会发生什么?
我尝试通过右键单击并选择"转到定义"来检查Visual Studio的每个地方都会带我回到类定义(上面代码的第4行),而不是类型的变量MDI1.我搜索了整个源代码(使用Visual Studio和Visual Studio外部的grepwin),并且找不到使用MDI1类型实例化的变量.
我不明白对类的调用是如何工作的,没有该类型的变量.
非常感谢帮助.
我正在使用Visual Studio 2010 Professional,这是我可以访问的最新版本.
我刚接触PHP,因此尝试动态实例化这样的类:
$var = new \App\$str;
Run Code Online (Sandbox Code Playgroud)
但我不断收到此错误:
unexpected variable $str after '\', expected: identifier.
Run Code Online (Sandbox Code Playgroud)
我知道这是可能的,但是我不确定确切的语法是什么,我发现的所有示例都没有\App\我需要的部分。
我希望水果类能够一次实例化一次,因此地图上只有一个水果对象.当蛇吃它时,它的析构函数被调用,而存在标志再次被设置为false.我该如何实现这种行为?
fruit.h
class Fruit {
protected:
char fruit;
bool exists;
int fruitPosX;
int fruitPosY;
public:
Fruit();
char getFruitType();
int getFruitPosX();
int getFruitPosY();
bool getExistenceFlag();
void setExistenceFlag(bool value);
~Fruit();
};
Run Code Online (Sandbox Code Playgroud)
map.cpp
void Map::displayEverythingOnMap(Snake& snake){
snakeBody* tmp = snake.firstNode;
while (tmp != NULL) {
gameArea[snake.getSnakePosX()][snake.getSnakePosY()] = tmp->bodyPart;
tmp = tmp->next;
}
Fruit* fruit = new Fruit;
fruit->setExistenceFlag(false);
if (fruit->getExistenceFlag() == false) {
gameArea[fruit->getFruitPosX()][fruit->getFruitPosY()] = fruit->getFruitType();
fruit->setExistenceFlag(true);
if ((fruit->getFruitPosX() == snake.getSnakePosX()) && (fruit->getFruitPosY() == snake.getSnakePosY())) {
delete fruit;
fruit->setExistenceFlag(false);
snake.grow();
}
}
}
Run Code Online (Sandbox Code Playgroud)