我使用两种不同types的信息std::vector<int> 。 我想确保我不会不小心混合这两种用途。 总之,我想要这样的一段代码失败: #include <vector> using A = std::vector<int>; using B = std::vector<int>; void fa(const A&); void fb(const B&); void fun() { A ax; B bx; fa(bx); fb(ax); } 即使fa预期typesA的参数,此代码编译。 显然, A和B是相同的。 什么是使这个代码正确编译的最简单的方法: fa(ax); fb(bx); 并使此代码失败: fa(bx); fb(ax); 当然,我可以在另一个类中包装std::vector<int> ,但是我需要重写它的接口。 另外,我可以inheritancestd::vector<int> ,但是这经常是不鼓励的。 总之,我需要两个不兼容的std::vector<int> 。 编辑 有人build议Strong typedefs可以解决这个问题。 这只是部分正确的。 如果我使用BOOST_STRONG_TYPEDEF(std::vector<int>, A) ,我需要添加一些烦人的强制转换。 例如,而不是 A ax{1,3,5}; […]
我想写出一个文本文件。 而不是默认的UTF-8,我想写它编码为ISO-8859-1,这是代码页28591.我不知道如何做到这一点… 我用以下非常简单的代码写出我的文件: using (StreamWriter sw = File.CreateText(myfilename)) { sw.WriteLine("my text…"); sw.Close(); }
我的MS Visual C#程序编译并运行得很好。 我closures微软Visual C#去closures和做生活中的其他事情。 我重新打开它,并(在做其他事情之前)去“发布”我的程序,并得到以下错误信息: 程序C:\ myprogram.exe不包含适用于入口点的静态“Main”方法 咦? 是的,所有的工作都在15分钟前完成。 当然,我可以相信,在我closures之前,我不小心碰到了什么东西或者做了些什么,但是什么? 我如何解决这个问题? 我的Program.cs文件如下所示: using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using System.Threading; namespace SimpleAIMLEditor { static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new mainSAEForm()); } } } …那里有一些评论。 没有其他的错误。 帮帮我?
我正在寻找一种方法来将PHP代码转换为C ++。 我想这样做有几个原因: 主要原因:有很多很棒的PHP工具/软件,我很喜欢使用,并将它们合并到C ++ GUI或非GUI应用程序中 提高性能 避免依赖PHP库 避免公开共享主机环境的源代码 被C ++语言特性赋予权力,并使用像Qt C ++和Poco这样的框架 到目前为止,我发现: http://sourceforge.net/projects/binaryphp http://www.mibsoftware.com/php2cpp/ 请分享你的想法和你知道的工具。 先谢谢你! 编辑:我也需要跨平台的可操作性和$$,语法糖function和接口良好的匹配。 编辑:请注意,上述2个工具使用2种不同的方法。 前者具有内置库来转换PHP程序代码并使其运行。 后者将PHP(逐字)转换为C ++。
我有俯仰,滚转和偏航angular度。 我将如何将这些转换为方向vector? 如果你能告诉我一个四元数和/或matrix表示,这将是特别酷的!
如果我编码这个 std::map<int, char> example = { (1, 'a'), (2, 'b'), (3, 'c') }; 然后g ++对我说 deducing from brace-enclosed initializer list requires #include <initializer_list> in C++98 'example' must be initialized by constructor, not by '{…}' 这让我很烦恼,因为构造函数是运行时,理论上可能会失败。 当然,如果是这样,它会很快失败,应该一直这样做,所以我应该迅速find并纠正这个问题。 但是,我还是很好奇 – 在编译时是否有初始化map,vector等的地方? 编辑:我应该说,我正在开发embedded式系统。 不是所有的处理器都有一个C ++ 0x编译器。 最stream行的可能会,但我不想遇到困难,必须维护代码的2个版本。 至于Boost,我还没决定。 他们在embedded式系统中使用他们的有限状态机类是很不爽的,所以这就是我在这里编写的Event / State / Fsm类。 叹气,我想我最好放心一点,但是我希望这个讨论对别人有帮助。
我在C ++ 0x中发现了std::string和string文字之间令人不安的不一致: #include <iostream> #include <string> int main() { int i = 0; for (auto e : "hello") ++i; std::cout << "Number of elements: " << i << '\n'; i = 0; for (auto e : std::string("hello")) ++i; std::cout << "Number of elements: " << i << '\n'; return 0; } 输出是: Number of […]
如何“重置”/“取消”一个boost::optional ? optional<int> x; if( x ) { // We won't hit this since x is uninitialized } x = 3; if( x ) { // Now we will hit this since x has been initialized } // What should I do here to bring x back to uninitialized state? if( x ) { // […]
我想创buildNUnittesting,以确保我的函数不会抛出exception。 有没有一些具体的做法,或者我应该写 [Test] public void noExceptionTest() { testedFunction(); } 如果没有抛出exception,它会成功?
所以这: cmd = new OdbcCommand( string.Format( @" SELECT * FROM Bobby_Tables WHERE Name = {0}", "Little Bobby Drop Tables" ), odbcConnection ); 被格式化为: cmd = new OdbcCommand( string.Format( @" SELECT * FROM Bobby_Tables WHERE Name = {0}", "Little Bobby Drop Tables" ), odbcConnection ); 我已经看过每一个换行和换行的选项,但是我还没有find能尽可能保持同一行的东西。 我假设我错过了正确的select。 我的Right margin (columns)选项设置为100,这是很大的。 问题:有没有办法让它看起来像原始的,并且仍然可以在其他需要包装的东西上进行智能格式化? 我可以手动把 cmd = new OdbcCommand( […]