我想在C++中使用迭代器,它只能迭代特定类型的元素.在以下示例中,我想仅迭代SubType实例的元素.
vector<Type*> the_vector;
the_vector.push_back(new Type(1));
the_vector.push_back(new SubType(2)); //SubType derives from Type
the_vector.push_back(new Type(3));
the_vector.push_back(new SubType(4));
vector<Type*>::iterator the_iterator; //***This line needs to change***
the_iterator = the_vector.begin();
while( the_iterator != the_vector.end() ) {
SubType* item = (SubType*)*the_iterator;
//only SubType(2) and SubType(4) should be in this loop.
++the_iterator;
}
Run Code Online (Sandbox Code Playgroud)
我如何在C++中创建这个迭代器?
我们将C#和Linq2SQL与MS SQL Server数据库一起使用.我们有一个mockdatacontext来进行一些单元测试.在测试时,我们发现了两种不同的行为,具体取决于是使用"真实"还是"模拟"数据库.
场景1:真实数据库
数据库中有5条记录:
db = realDatabase
db.InsertOnSubmit(new record)
var count1 = db.getTable.Count()
db.SubmitChanges()
var count2 = db.getTable.Count()
Run Code Online (Sandbox Code Playgroud)
count1 = 5 count2 = 6
场景2:模拟数据库
数据库中有5条记录:
db= mockDatabase
db.InsertOnSubmit(new record)
var count1 = db.getTable.Count()
db.SubmitChanges()
var count2 = db.getTable.Count()
Run Code Online (Sandbox Code Playgroud)
count1 = 6 count2 = 6
*"模拟"数据库在调用SubmitChanges()之前已经知道新记录,因此它包含在计数中.为了测试,我们需要两个行为相同.
有没有其他人遇到这个问题,你能建议一个解决方案吗?
我想在C#中使用以下代码,但我似乎无法摆脱它.如果用户按下某个键或移动啮齿动物(又称鼠标),我想终止该应用程序.这是我的代码(不笑!).
private void frmDots_KeyDown(object sender, KeyEventArgs e)
{
bgNotClicked = false;
Close();
}
private void frmDots_Click(object sender, EventArgs e)
{
bgNotClicked = false;
Close();
}
while (bgNotClicked)
{
// Clear the first element in our XY position. This is the reverse of the way I normally create the dots application
System.Drawing.Rectangle clearDots = new System.Drawing.Rectangle(Dots.PositionX[iCounter], Dots.PositionY[iCounter], 8, 8);
// Create the black color and brush to clear dots
Color clearDotsColor = Color.Black;
SolidBrush clearDotsBrush = new SolidBrush(clearDotsColor);
// Finally clear …Run Code Online (Sandbox Code Playgroud) 我项目中的测试人员希望每个页面元素都有一个唯一的HTML ID,以便更轻松地进行自动化测试.
我很难记得这样做,因为我不需要ID来进行开发.我怎样才能确保我不忘记?
我想也许像Checkstyle这样的东西可以告诉我,甚至是IntelliJ中的"检查" - 但它们似乎都不支持这种功能.
有任何想法吗?
如何从属性文件中单独读取值.例如,如何从以下示例中读取build.home或temp.dir的值.
env.properties的内容
build.home=c:\build
temp.dir=c:\temp
Run Code Online (Sandbox Code Playgroud)
问候
Sarathy
当2008可用时,有什么理由继续运行Visual Studio 2005?
我在一个环境被指定为Visual Studio 2005的项目上工作.这有很好的技术原因吗?我可以使用Visual Studio 2008并构建一个与Visual Studio 2005相同的应用程序构建100%无法区分的应用程序吗?
我遇到了以下编译良好的代码(使用Visual Studio 2005):
SomeObject SomeClass::getSomeThing()
{
for each (SomeObject something in someMemberCollection)
{
if ( something.data == 0 )
{
return something;
}
}
// No return statement here
}
Run Code Online (Sandbox Code Playgroud)
如果方法结尾没有return语句,为什么要编译?
我试图让emacs正确格式化c ++中的"for each"结构.
我希望在以下两个示例中将括号与fin 排成一行for:
for each(Type a in b)
{ //^c^s shows substatement-open
//... do stuff
}
for( ; ; )
{ //^c^s shows substatement-open
//... do stuff
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,使用[Ctrl-c Ctrl-s](或[Ctrl-c Ctrl-o])显示打开{字符都是类型,substatement-open并且在查看时c-offsets-alist我看到它substatement-open等于0.
如何使emacs缩进for each()命令,类似于缩进for(;;)命令的方式?
我有一个关于依赖注入的问题.
说我想创建一个类调用它,WebGetTask
WebGetTask需要依赖HttpService
坏代码1代码:
private HttpService httpService;
...
List<WebGetTask> list = new ArrayList<WebGetTask>();
for(...)
{
list.add(new WebGetTask(httpService));
}
...
Run Code Online (Sandbox Code Playgroud)
好.我知道这很糟糕,因为注入了httpService,但它从未使用过,除了在新的WebGetTask上创建
好坏代码2代码:
private WebGetTaskFactory webGetTaskFactory;
...
List<WebGetTask> list = new ArrayList<WebGetTask>();
for(...)
{
list.add(webGetTaskFactory.newTask());
}
...
Run Code Online (Sandbox Code Playgroud)
我认为这更好,因为我们使用工厂但......
从我所在的位置,我可以看到在WebGetTaskFactory中我们仍然注入一个HttpService并且没有对它做任何事情,除了创建一个新的WebGetTask的唯一目的
所以回顾一下我的问题是如何设计一个工厂类(WebGetTaskFactory),当新对象在其构造函数上需要依赖项(HttpService)而不是简单地注入和传递依赖项(HttpService)时,它会创建新对象(WebGetTask)?或者更确切地说,这是这样做的方式吗?如果是这样,那么一切都很好,如果不是,那么请指导我如何正确使用DI和工厂模式.谢谢.
我有多个列,分别代表一个特定的x值的Y值。我正在做一个散点图。在绘制每个系列时,我可以轻松地选择列中存在的y值,但是x值对于每列都是恒定的,我似乎无法弄清楚如何针对多个y列值重复一个恒定的x值。有人知道如何在文本框“ X值”中提供一个可重复的值吗?
我正在学习 Java 课程,我需要将字符串转换为日期格式 (dd/MM/yyyy)。我一直在使用 SimpleDateFormat 来格式化我的输入,但它显示了日期所属的时间、时区和星期几。这是我的代码片段:
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date date = new Date();
do{
y = JOptionPane.showInputDialog(null,
"Please enter the vehicle's registration date",
"Year?",
JOptionPane.QUESTION_MESSAGE);
try {
date = df.parse(y);
check = true;
}
catch (ParseException e) {
check = false;
}
}
while (check == false);
return date;
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何将格式保持为日期(例如 12/3/2000)?谢谢