在这个问题中,陈述了这个结构防止实例的堆栈分配.
class FS_Only {
~FS_Only() = delete; // disallow stack allocation
};
Run Code Online (Sandbox Code Playgroud)
我的问题是,它如何阻止分配?我理解,无法显式或隐式删除此实例.但我认为,这将分别导致内存泄漏或运行时错误.
编译器是否足够聪明以排除这种情况并引发编译器错误?还有为什么需要这个呢?
我玩Dwarf Fortress游戏.对我来说,主要的挑战是有效地设计堡垒的布局.意思是,每个行业流程应尽可能密集,以尽量减少行程距离.
一个例子可能是食品工业
.每个灰色椭圆代表一个建筑物.每个白色矩形代表建筑物的产品.
我的目标是找到将建筑物分布在2D网格上的算法,使得这些建筑物之间的距离在它们如何连接的意义上是最小的.这意味着fishery和loom可相距甚远,但loom并farmer's应尽可能接近.
目前我已经考虑过使用一些现成的软件来模拟布局,但算法的一些技巧会很好.
目前我正在考虑一些力导向算法,但我不确定离散网格要求.
问题的形式化:是否存在一种在离散坐标下工作的强制绘制图算法?
更新:我已经在AS3中找到了Force绘制算法的实现(web也包含JS版本).我会尝试将其转换为离散版本.但我怀疑它会起作用......
更新2:评论中要求进一步限制.它们是:每个建筑物占据虚拟网格上的单个单元格.建筑物可以在相邻的单元格上.建筑物不能堆叠/重叠.(PS:在游戏中,每个建筑都有规模,通常为3x3,但我想让问题更加通用,以便采用更多方法).
我创建了Android应用程序,仅针对平板电脑设备.在AndroidManifest中,我设置了以下屏幕支持:
<supports-screens
android:largeScreens="true"
android:normalScreens="false"
android:requiresSmallestWidthDp="600"
android:smallScreens="false"
android:xlargeScreens="true" />
Run Code Online (Sandbox Code Playgroud)
我的所有图形都是向量,因此XML文件drawable直接放在目录中.只有位图是启动器图标,如下所示:
res\mipmap-hdpi\ic_launcher.png
res\mipmap-xxhdpi\ic_launcher.png
res\mipmap-xhdpi\ic_launcher.png
res\mipmap-xxxhdpi\ic_launcher.png
res\mipmap-mdpi\ic_launcher.png
Run Code Online (Sandbox Code Playgroud)
在开发人员控制台中,我收到一条警告,我的应用程序不适合平板电脑"使用专为平板电脑屏幕设计的资产".
我试过添加mipmap-large-mdpi\ic_launcher.png,mipmap-xlarge-mdpi\ic_launcher.png但它对警告没有影响.
我该怎么办,让我的应用程序适合平板电脑?
有没有办法从WPF中的WinForms完成此功能?
ListView.FocusedItem = ListView.Items[itemToFocusIndex]
Run Code Online (Sandbox Code Playgroud)
我正在尝试在WPF ListView中的项目上手动设置焦点(而不是选择).来自System.Windows.Controls.谢谢.
注意:我最感兴趣的是C#,Java和C++,但这是任何语言都会提出的学术问题.
我知道这个问题是从外面可解,利用给定的语言的适当的方法(电话free,Dispose或通过删除所有引用实例).
我的想法是我创建了一个实例,在构造函数中,我启动了私有计时器.当计时器结束时,它将调用一些实例方法并销毁变量.
我认为在C#中应该可以在实现时调用Disposeself IDisposable,但这不会破坏实例.
在C++中,我可以调用它destructor,但这会导致内存泄漏,而且这是非常糟糕的做法.
在Java中我没有任何线索,分配this它是不可能的,因为它是final字段.
那么有什么办法可以摧毁自己吗?
我正在开发程序/游戏,我有静态实用程序类和params.
class ParamsGeneral {
public static final int H_FACTOR = 100;
public static int MAX_SCORE = 1000;
...
}
Run Code Online (Sandbox Code Playgroud)
然后我需要在某些特定情况下覆盖这些值,例如在有限分数的地图上播放.所以我做了以下事情:
class ParamsLimited extends ParamsGeneral {
public static int MAX_SCORE = 500;
// other params stay same
}
Run Code Online (Sandbox Code Playgroud)
预期用途如下:
class Player {
ParamsGeneral par;
public Player() {
if(onLimitedMap()){
par = new ParamLimited();
}
}
public boolean isWinner() {
if(this.score == par.MAX_SCORE) {
return true;
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我实际上没有测试过这段代码,因为IDE抱怨通过实例调用静态字段以及字段隐藏.我清楚地看到这段代码很臭,所以有没有办法实现这个或者我必须分别编写每个param类?
PS:我知道我应该使默认类抽象并使用getter,我只是好奇是否有办法使值静态可访问.
如何使用C++访问OpenCV 2.3中的各个像素?
对于我的U8C3图像,我试过这个:
Scalar col = I.at<Scalar>(i, j);
Run Code Online (Sandbox Code Playgroud)
和
p = I.ptr<uchar>(i);
Run Code Online (Sandbox Code Playgroud)
首先是抛出异常,第二个是返回一些不相关的数据.我能够找到的所有示例都是针对C版OpenCV的旧IIPimage(?).
我只需要在给定坐标处获得像素的颜色.
我正在开发计算机视觉应用程序,我将需要Classifier类.这个类在每次运行时都是不可变的,它在初始化时从磁盘加载训练过的数据.我想确保整个程序可以访问相同的训练数据,并且我希望在加载后阻止从磁盘重新加载.
我考虑的是使用静态类或单例.我不确定如何将数据加载到静态类,因为在编译时不知道数据文件的路径 - 它将是程序参数.所以我在考虑Singleton模式,但我不知道如何动态初始化它.
我的想法是使用以下:
class Singleton {
private static Singleton instance;
private Singleton() { ... }
private static SomeDataObject data;
public static Singleton getInstance() {
if(instance == null)
instance = new Singleton();
return instance;
}
public static init(string dataPath){
if(data == null)
loadDataFromFile(dataPath)
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我无法控制首先调用哪个方法.
我知道正确的方法是在开始时用数据创建实例并将其传递给需要它的所有类和方法,但这不是真正的通用解决方案.我可以在我自己的代码中跟踪对Classifier的所有调用,但是如果我将代码作为API,这将是一个问题.
简而言之,如何在运行时初始化单例?
考虑以下Java代码:
public class overriding {
public static void main(String[] args) {
b b = new b();
a a = (a)b;
a.Info();
b.Info();
}
}
class a {
void Info() {
System.out.println("I'm a");
}
}
class b extends a {
void Info() {
System.out.println("I'm b");
}
}
Run Code Online (Sandbox Code Playgroud)
现在让我们尝试在C#中做同样的事情
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
b b = new b();
a a = (a)b;
a.Info();
b.Info();
Console.ReadLine();
}
}
class a
{
public void Info()
{
Console.WriteLine("I'm …Run Code Online (Sandbox Code Playgroud) java ×4
c# ×3
c++ ×3
oop ×2
.net ×1
algorithm ×1
android ×1
c ×1
c++11 ×1
crc32 ×1
focus ×1
google-play ×1
graph ×1
graph-layout ×1
inheritance ×1
instance ×1
opencv ×1
optimization ×1
singleton ×1
static ×1
wpf ×1
wpf-controls ×1