小编Ale*_*lex的帖子

静态类或实例指针

背景故事:

目前我有一系列与游戏相关的三个课程.我以前使用Unity制作游戏,您可以使用所有代码都可访问的功能访问相机等组件.但是,我当前的设置依赖于跨越其他类发送的每个类的实例.请参阅以下内容:

class World{

};
class Game{
     Camera* camera;
     World* world;
};
class Camera{
     Game* game;
     World* world;
};
Run Code Online (Sandbox Code Playgroud)

问题:

  • 这是设计糟糕的结果还是有时这样的设置是合理的?

  • 我是否应该在当前设置中使用静态类,因为它会澄清代码并且每个类的实例只使用一次?

  • 在实例上使用静态类有哪些可能的缺点?

编辑:为什么他们需要互相访问.

为什么相机需要世界:相机需要访问世界,因为世界需要从相机的角度进行渲染.相机会根据所看到的内容触发世界渲染.渲染是通过相机中的各种方法触发的,例如移动时.

当绘制相机时,它会绘制它所看到的内容,例如世界.为了绘制世界,相机需要进入世界.

为什么相机需要游戏:游戏具有诸如FPS之类的值,相机使用它来显示调试信息的叠加.

c++ oop static class c++11

5
推荐指数
1
解决办法
131
查看次数

如何通过代码访问资源(样式)?

我有一个资源字典包含程序控件的所有自定义样式.Dictionary与应用程序的资源合并,如下所示:

    <ResourceDictionary x:Key="Controls">
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Controls.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

我可以通过xaml轻松访问不同的样式:

<Button Style="{StaticResource Button}" />
Run Code Online (Sandbox Code Playgroud)

但每当我尝试通过代码使用此样式分配控件时,它都会失败.

我试过了:

    Button.Style = Application.Current.Resources("Button")

    Button.Style = CType(Application.Current.Resources("Button"), Style)
Run Code Online (Sandbox Code Playgroud)

以及与上述类似的不同方法.在测试一些获得样式的不同方法时,我遇到了"未找到资源",但在使用上述方法时,程序似乎找到了样式.我可以成功运行该程序 - 但没有任何视觉证据确实应用了该样式.

如何正确地为控件分配资源字典中找到的样式?

vb.net wpf visual-studio

2
推荐指数
2
解决办法
4463
查看次数

将字符串拆分为单词并保留分隔符

我想将一个字符串(句子)拆分为单词数组并保留分隔符。


我发现并且目前正在使用这个正则表达式:

[^.!?\s][^.!?]*(?:[.!?](?!['"]?\s|$)[^.!?]*)*[.!?]?['"]?(?=\s|$)

可以在这里找到解释: http: //regex101.com/

这完全按照我想要的方式工作,并且有效地生成了一个像这样的字符串

This is a sentence.

到一个数组

["This", "is", "a", "sentence."]

这里的问题是它不包含空格或换行符。我希望字符串像以前一样被解析为单词,但我也希望相应的空格和/或换行符属于前一个单词

我读过关于积极的前瞻,应该寻找未来的字符(空格和/或换行符),但在提取单词时仍然考虑它们。尽管这可能是解决方案,但我未能实施它。

如果有什么区别的话,我正在使用 JavaScript 和以下代码:

//save the regex -- g modifier to get all matches
var reg =  /[^.!?\s][^.!?]*(?:[.!?](?!['"]?\s|$)[^.!?]*)*[.!?]?['"]?(?=\s|$)/g;

//define variable for holding matches
var matches;
//loop through each match
while(matches = reg.exec(STRING_HERE)){
    //the word without spaces or newlines
    console.log(matches[0]);
}
Run Code Online (Sandbox Code Playgroud)

该代码有效,但正如我所说,它不包含空格和换行符

javascript regex

1
推荐指数
1
解决办法
2185
查看次数

标签 统计

c++ ×1

c++11 ×1

class ×1

javascript ×1

oop ×1

regex ×1

static ×1

vb.net ×1

visual-studio ×1

wpf ×1