有效的c++项目3示例
Effective c++ item 3 example
我的问题是关于《高效C++》一书中的一个特定项目(3)。这本书给出了一个例子,我试图尽可能地将其复制到vs 2010 c++(包括iostream和string)中:
class TextBlock {
public:
const char& operator[](std::size_t pos) const
{
return text[pos];
}
char& operator[](std::size_t pos)
{
return text[pos];
}
private:
std::string text;
};
void print(const TextBlock& ctb)
{
std::cout << ctb[0]; // OK
//ctb[0] = ‘A’; // Not OK – compiler error
}
int _tmain(int argc, _TCHAR* argv[])
{
TextBlock tb(“Hello”);
std::cout << tb[0];
tb[0] = ‘x’; // OK because return has &, not const
const TextBlock ctb("World");
std::cout << ctb[0];
return 0;
}
我得到了这些编译错误:
1>c:userslalancelotdocumentsvisual studio 2010projectsitem3item3.cpp(31): error C2065: '“Hello”' : undeclared identifier
1>c:userslalancelotdocumentsvisual studio 2010projectsitem3item3.cpp(33): error C2065: '‘x’' : undeclared identifier
1>c:userslalancelotdocumentsvisual studio 2010projectsitem3item3.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
首先让我说,我很沮丧,因为我已经陷入了这本书的早期阶段。我在这里找到了一些信息:
static_cast<常量A>(*this)和static_cast<常量A>;(*this),
但不是像书中那样有效的答案。我想让这本书的例子发挥作用,这样我就能理解它是如何工作的。我已经被这个问题困扰了很多天了,我必须承认我需要帮助。我想知道我是不是错过了一个基本的概念,或者我是不是太过头了。谢谢
您使用的是哪种引号?我问是因为当我看到你代码,我看到不同的开头和结尾引号,并且当我复制/粘贴时它进入我的编辑器,表明它们是Unicode开放的结束引号C++程序中的所有标点符号都应该是纯的ASCII:0x22表示双引号(包括左引号和右引号),0x27对于单引号。这也是相应的字符在程序中输入文本时,键盘上的编辑器。(不要使用文字处理器输入代码。)
类TextBlock需要一个构造函数才能从文本中构造:
explicit TextBlock( const std::string& s ) : text( s )
{
}
也许这本书有一个网站,你可以在那里查找对这本书的更正。
相关文章:
- 示例C++项目编译中的警告
- Flex/Bison:构建示例项目以生成 CPP 时出错
- 需要示例 CMake 项目,该项目在 Windows 和 Visual Studio 上使用 Xerces-C++ 3
- 编译示例 Cinder 项目时存在大量未解决的外部问题
- 无法构建 OpenCV Android 示例项目
- 是否有C 中使用OpenCV和Travis CI的示例项目
- Qt示例项目不运行
- OpenCV c++ 示例进入 iOS 项目
- 有效的c++项目3示例
- Boost序列化:XCode 5项目中的链接器错误,由CMake生成(带最小完整示例)
- 从iOS示例项目导入cpp文件时,找不到架构armv7的符号
- Oculus Rift VR - 示例项目错误
- 在Windows VS2010上构建NaoQI C++SDK示例项目helloworld时出错
- 无法重现项目示例项目中的内存清理结果
- 如果我将文件扩展更改为.cpp,本机活动示例项目将无法编译
- 执行示例项目时出现libvlcqt错误
- 使用Cygwin + gcc编译Boost示例项目
- 黑莓示例项目将无法编译VS
- {Qt5.0.2/QML/QtQuick2.0/ c++}示例项目运行时没有错误
- OpenNI2.0 -在Visual Studio中构建包含的示例项目时获得LNK错误