我正在与NetBeans中的C++项目的一个小组合作.
出于某种原因,即使已包含正确的库,NetBeans也会将"string","endl","cout"等内容报告为"无法解析".
该项目按预期编译和运行,所以在一天结束时,这没什么大不了的,只是将所有标记为错误的内容都非常烦人.
我一直无法找到关于这个bug的任何内容.在博客中只是一个模糊的参考.还有其他人经历过吗?
显然它没有广泛传播,因此必须有一个设置/配置导致它.有谁知道谁阻止这种情况发生?
编辑:
不,这些"错误"仅在IDE中.代码编译好并运行.开发人员使用了"using namespace std;" 所以应该没有问题.似乎NetBeans IDE存在问题.
示例代码:
#include <stdlib.h>
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
string test;
test = "Why?";
cout << test << endl;
return (EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)
这段代码编译并打印出"为什么?" 但在IDE中将"string","cout"和"endl"标记为错误.明确使用std ::没有区别
清理编辑:
对于任何感兴趣的人,几天后我有5个可用于NetBeans的更新.安装此更新后,问题得到纠正,尽管代码没有变化.所以,显然这是一个NetBeans错误.
如何在C#2008中打开Outlook Express?
如何将文件从我的应用程序附加到Outlook?
我只是想弄个百分比.
irb(main):001:0> (25 / 50) * 100
=> 0
Run Code Online (Sandbox Code Playgroud)
这绝对应该等于50,正如我的计算器所证实的那样(将相同的等式复制并粘贴到gcalc中).为什么Ruby拒绝这样做?
我正在设计一种编程语言,所以我一直在考虑基类型的命名方式.
"词典"对于字典来说似乎是个坏名字.它们不是有组织的单词列表及其定义; 他们不处理单词,他们没有定义,也不是列表.他们与"词典"这个词唯一模糊的关联就是人们执行"查找"就像使用纸质词典一样(这就像把它称为"电话簿"一样好).
"HashTable"描述了可能发生变化的实现.
"关联数组"(来自JavaScript)获得了分数,因为"关联"对于它的作用是一个很好的形容词,但是因为"数组"也描述了一个实现,所以会失去分数,更糟糕的是,它描述的不准确.
"键/值对集"似乎最准确,但它太长而无用(你真的想每次输入"KeyValuePairSet"吗?).
如果我们将"键/值对"称为"关联",我们将获得"AssociationSet".这对我来说是最好的,但不会跳出来作为正确的答案; 它仍然很长,"设置"仍然感觉有点不对劲."AssociationList"更糟糕("list"意味着排序,而不是那里).我简单地只考虑了"关联",但这听起来更像是我会命名一个实例而不是类."RelationSet"和"PairSet"更短但描述性更低(两者都没有捕获到它是一种单向关系键值的事实;键的值在字典的上下文中没有意义).
任何想法可能是一个更好的词典名称?
我希望具有相同的静态变量,具有不同的值,具体取决于类的类型.
所以我会的
public class Entity
{
public static Bitmap sprite;
public void draw(Canvas canvas, int x, int y)
{
canvas.drawBitmap(sprite, x, y, null);
}
}
public class Marine extends Entity
{
}
public class Genestealer extends Entity
{
}
Run Code Online (Sandbox Code Playgroud)
然后在我的主程序中去:
Marine.sprite = // Load sprite for all instances of Marine
Genestealer.sprite = // Load sprite for all instances of Genestealer
Run Code Online (Sandbox Code Playgroud)
我不想在类的每个实例中存储相同的sprite.我希望每种类型都有一个.我想继承静态精灵变量和绘制精灵的绘制函数.但我不希望Genstealer精灵覆盖海洋精灵.
这可能吗?
我该怎么办?
我正在编写一个从小型到中型的clojure应用程序.我们目前正在使用导入模块
(ns foo (:use bar))
(fn-in-bar)
Run Code Online (Sandbox Code Playgroud)
但我认为切换到
(ns foo
(:require [bar :as b]))
(b/fn-in-bar)
Run Code Online (Sandbox Code Playgroud)
有助于清晰度和代码理解.这是一个做事的好方法吗?有没有更好的办法?
在过去8年左右的时间里,我几乎一直是Java程序员,最近我又一直在玩C++.对于C++ STL和Java中的迭代器,我遇到了一个问题.
在Java中,您可以编写一个采用如下迭代器的方法:
void someMethod(Iterator<String> data) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
你传入一个Iterator并且该方法不需要知道该迭代器的底层集合是什么,这很好.
在C++中,迭代器没有通用的基类(据我所知).我必须写一个这样的函数:
void some_function(std::vector<std::string>::const_iterator data) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
换句话说,some_function知道迭代器是一个迭代器vector.这不好,因为无论迭代器的底层集合是什么,我都希望函数能够工作.
我怎么能用C++做到这一点?如果它真的不可能,那么在C++中创建一个以集合作为参数的函数的最佳方法是什么,但是不需要知道具体的集合类型是什么?
附录
谢谢你的回答.除了答案之外,我在"C++标准库:教程和参考"(Nicolai M. Josuttis)一书的第7.5段(迭代器特征)中找到了一些很好的信息.第7.5.1段解释了如何为不同的迭代器类别编写函数的专用版本.
我有核心数据(适用于iPhone)的典型模型,包括部门和员工(部门 - >>员工).
我不想在每次加载时加载一个部门的所有员工,所以我认为我将Employee创建为一个获取的财产.我以为我可以像这样定义一些Predicate:
employee.deparmentId = department.departmentId
Run Code Online (Sandbox Code Playgroud)
但我不能(使用Xcode图形编辑器).
现在,阅读一些帖子,我倾向于为部门与员工(及其反向)定义一个关系,并使用它.
我的问题是:懒人加载多对多关系?或者,每次创建(检索)部门列表时,它是否会在"数据库"中加载我的所有员工?
在此先感谢Gonso
c++ ×2
java ×2
c# ×1
clojure ×1
collections ×1
core-data ×1
dictionary ×1
django ×1
inheritance ×1
iphone ×1
jqgrid ×1
jquery ×1
jsp ×1
lazy-loading ×1
linux ×1
namespaces ×1
naming ×1
netbeans ×1
netbeans6.7 ×1
python ×1
ruby ×1