2016-06-27 145 views
-1

这似乎是一个简单的问题,但我无法理解解决方案是什么。我有一个屏幕类,其中的对象基本上是X和Y坐标,字体颜色等所有工作正常,我可以实例化和使用这些对象。实例化对象变量可见性

有时我需要改变正在写入屏幕的字符串的颜色。这更像是一个“系统调用”,一旦完成,将设置所有字符串。所以每次我写屏幕时,我都被迫首先“设置文本颜色”。或者我?我有一个方法,setValue: objA->setValue("1234", RED);

当方法得到这个调用,它会设置屏幕写入的颜色。假设objA只是设置颜色RED。如果另一个对象需要写入屏幕,并且它的颜色相同,我不想再次将它写入屏幕,以减少写入屏幕的次数。所以,基于最后一个对象的颜色,我想更新屏幕文本的颜色(或不是) 在C中,这当然是最为邪恶的静态全局。我如何在C++中做类似的事情?

谢谢...

+0

嗨,谢谢你的回答! “setValue”是一种重载函数,可以设置特定的图形对象,也可以将文本设置为x,y位置。你的类静态变量的建议非常好。再次感谢! – user10326

+0

实际上,因为我不能动态分配内存(在FreeRTOS中使用mem模型2),所以我使用“new”来创建对象,这应该不需要将它们创建为静态。将该变量声明为私有,并设置/测试它可以很好地工作。 – user10326

+0

欢迎来到Stack Overflow!我编辑了您的问题以格式化内联代码示例,以便它能够正确呈现 - 请参阅编辑帮助以获取有关格式化的更多信息。请编辑以提供确定具体问题所需的其他详细信息。祝你好运! – Wtower

回答

0

我不能完全确定你要什么,这里:IE浏览器,如果你使用的是指该对象代表屏幕还是有点文本的在屏幕内。我会假设后者。

这听起来像你只是想要一个地方松开你的颜色值,对于未指定颜色值的后续调用。你应该看看类静态成员。在最简单的情况下,你只需要一个私有的“color”类型的静态类成员,并让你的“setValue()”函数简单地更新该变量。如果我正确地阅读你的问题,“setValue”应该被称为“写文本”,也许我会被误解,但是也可以将“set color”分解为你的课变成了一个公共的静态成员函数,不是一个正确的东西,只是一个清晰的东西。)

+0

我不确定是否需要“静态”。 –

+0

是的,这取决于调用是按屏幕还是按屏幕上的每个对象;如果每个屏幕> 1个对象,则会需要静态,因为它将被共享。如果这只是一个“屏幕”对象,那么颜色将只是一个普通的旧成员。 –