Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有效c++;项目3示例_C++_Effective C++ - Fatal编程技术网

C++ 有效c++;项目3示例

C++ 有效c++;项目3示例,c++,effective-c++,C++,Effective C++,我的问题是关于《有效的C++》一书中的一个具体项目(3)。这本书给出了这个例子,我试图尽可能地把它复制到VS 2010 C++(包括IoString和String): 首先,我要说的是,我已经被困在这本书的早期阶段而感到沮丧。我不知怎么在这里找到了一些信息: , 但不是像书中那样有效的答案。我想让这本书的例子起作用,这样我就可以理解它是如何工作的。我已经在这个问题上纠缠了很多天了,我必须承认我需要帮助。我想知道我是否在这里遗漏了一个基本概念,或者我是否有点不知所措。谢谢。类TextBlock需要

我的问题是关于《有效的C++》一书中的一个具体项目(3)。这本书给出了这个例子,我试图尽可能地把它复制到VS 2010 C++(包括IoString和String):

首先,我要说的是,我已经被困在这本书的早期阶段而感到沮丧。我不知怎么在这里找到了一些信息:


但不是像书中那样有效的答案。我想让这本书的例子起作用,这样我就可以理解它是如何工作的。我已经在这个问题上纠缠了很多天了,我必须承认我需要帮助。我想知道我是否在这里遗漏了一个基本概念,或者我是否有点不知所措。谢谢。

类TextBlock需要一个构造函数才能从文本中构造:

explicit TextBlock( const std::string& s ) : text( s )
{
}

也许这本书有一个网站,你可以在那里查找对这本书的更正

你用的是什么样的引号?我问是因为当我看着你的 代码时,我会看到不同的开始和结束引号,以及复制/粘贴时 它进入我的编辑器,它表明它们是Unicode打开和关闭的 收盘报价<强> C++程序中的所有< /强>标点符号应为纯 ASCII:0x22表示双引号(开头和结尾),以及0x27 对于单引号。这也是对应的字符 在程序中输入文本时,键盘上的
编辑(不要使用文字处理器输入代码。)

Re:前两个错误;你的报价不可靠,应该是常规的“打字机双引号”
但似乎不完整。很明显,书中的代码不完整,类定义中有“…”部分。有效C++的作者提到,这应该是第二本书,同时学习C++。如果你刚开始使用语言,最好找到一本不同的书,然后返回到有效的C++,它不是我在C++上的第一本书,但是我没有编码很多C++。我曾经在python中工作,我想更深入一些。我想说,我已经准备好了,但说实话,我不知道我是否准备好了。谢谢你对约阿希姆的警告。谢谢,这是我的法语键盘造成的。我现在要注意这些。“PierreLalancette试图用法语键盘写C++是一件痛苦的事。我建议您加载一个美国键盘驱动程序,并在编辑程序时激活它。(Windows在这方面做得非常好。我已经把我的机器设置好了,ALT-1给了我,ALT-2法语,ALT-3德语和ALT-0任何刻在键帽上的东西。我过去在Solaris下也做过同样的操作。)别担心,我有英语和法语之间的ALT shift开关。只是我没有意识到它可能导致的问题。我已经习惯了用英语编程,我必须更加小心。@PierreLalancette我仍然很惊讶问题应该出在键盘上,而不是编辑器上。当我输入未移位的3时,我使用的法语键盘确实发送0x22。但是,一些文本处理器(包括MS Word,在某些配置中)将计算出此字符是开始引号还是结束引号,并对其进行更改,即使在英语中也是如此。在处理文本时,开始引号和结束引号是不同的字符。我已配置为使用alt shift切换语言和键盘。这真的是一个让(加拿大)法语书写具有所有正确键位的问题。我尝试过很多配置,这是一个适合我们习惯的配置,大多数人在这里使用。这不是一个真正的问题,因为我正在(而且应该一直)用英语键盘和语言编程。是的!这是我错过的部分。出于某种原因,我认为字符串的创建是操作符[]overide的一部分。我错了。非常感谢。哦,我已经查过这本书的勘误表了。他们只讨论“pos”值应该是常量这一事实。没有别的了。
1>c:\users\lalancelot\documents\visual studio 2010\projects\item3\item3.cpp(31): error C2065: '“Hello”' : undeclared identifier
1>c:\users\lalancelot\documents\visual studio 2010\projects\item3\item3.cpp(33): error C2065: '‘x’' : undeclared identifier
1>c:\users\lalancelot\documents\visual studio 2010\projects\item3\item3.cpp(34): error C2664: 'TextBlock::TextBlock(const TextBlock &)' : cannot convert parameter 1 from 'const char [6]' to 'const TextBlock &'
1>          Reason: cannot convert from 'const char [6]' to 'const TextBlock'
1>          No constructor could take the source type, or constructor overload resolution was ambiguous
explicit TextBlock( const std::string& s ) : text( s )
{
}