由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - c++小问题
相关主题
为什么在overloading中,friend <<不能读取private值呢?问一个有关iostream的问题
Why should i include .cpp instead of .h输入输出流,stl,api精通各需要多长时间?
overriding operator<<about namespace
问个C++的问题 friend operator请问这是什么错误呀
请问关于overloading <<C++ template question
为啥gcc找不到类的构造函数?return Triangular_iterator( _beg_pos );意思
问个 std::vector 的基本问题ask a C++ inheritance question
再问两个C++问题C++问题,confusing...
相关话题的讨论汇总
话题: foo话题: const话题: ostream话题: operator话题: array2d
进入Programming版参与讨论
1 (共1页)
N***m
发帖数: 4460
1
effective c++上面的讲proxy class,给的例子只有轮廓,但没有具体实现。
我就练习一下。问题是
ostream& operator << (ostream& os, const Array2D & a)必须要const_cast,
不然编译不通过。我尝试把Array1D operator[](int pos)声明为const,也不行。
我哪个地方搞错了?还有typeid(T)返回的是i和3Foo,不是integer和Foo,
这个是不是和编译器有关?
/*
use of proxy class
*/
#include
#include
using namespace std;
// class Foo is some type for test Array2D later;
class Foo {
int val;
public:
Foo(){}
Foo(int i):val(i){}
friend ostream & operator<<(ostream& os, const Foo & b);
}
N***m
发帖数: 4460
2
问题找到了,忘记写成const T& operator[](int pos) const。总而言之
大家都const就没问题了。如果概念不清楚的话,层数多了容易乱,呵呵。

【在 N***m 的大作中提到】
: effective c++上面的讲proxy class,给的例子只有轮廓,但没有具体实现。
: 我就练习一下。问题是
: ostream& operator << (ostream& os, const Array2D & a)必须要const_cast,
: 不然编译不通过。我尝试把Array1D operator[](int pos)声明为const,也不行。
: 我哪个地方搞错了?还有typeid(T)返回的是i和3Foo,不是integer和Foo,
: 这个是不是和编译器有关?
: /*
: use of proxy class
: */
: #include

X****r
发帖数: 3557
3
Array2D和Array1D的operator []都应该有两个版本的,const的和没有const的。
typeid具体返回值的(编译器)实现决定的,你不用管,只要知道对于同一个类型结果
是一样的,不同类型结果不一样就行了。

【在 N***m 的大作中提到】
: effective c++上面的讲proxy class,给的例子只有轮廓,但没有具体实现。
: 我就练习一下。问题是
: ostream& operator << (ostream& os, const Array2D & a)必须要const_cast,
: 不然编译不通过。我尝试把Array1D operator[](int pos)声明为const,也不行。
: 我哪个地方搞错了?还有typeid(T)返回的是i和3Foo,不是integer和Foo,
: 这个是不是和编译器有关?
: /*
: use of proxy class
: */
: #include

N***m
发帖数: 4460
4
got you~
都是偷懒惹的祸~~
typeid输出不太美观啊,直接Integer和Foo不是很好吗?

【在 X****r 的大作中提到】
: Array2D和Array1D的operator []都应该有两个版本的,const的和没有const的。
: typeid具体返回值的(编译器)实现决定的,你不用管,只要知道对于同一个类型结果
: 是一样的,不同类型结果不一样就行了。

1 (共1页)
进入Programming版参与讨论
相关主题
C++问题,confusing...请问关于overloading <<
[合集] 关于template和inheritance的问题请教为啥gcc找不到类的构造函数?
一个关于assignment constructor和expection的问题问个 std::vector 的基本问题
[合集] 怎样有效的传递C静态数组的变量名?再问两个C++问题
为什么在overloading中,friend <<不能读取private值呢?问一个有关iostream的问题
Why should i include .cpp instead of .h输入输出流,stl,api精通各需要多长时间?
overriding operator<<about namespace
问个C++的问题 friend operator请问这是什么错误呀
相关话题的讨论汇总
话题: foo话题: const话题: ostream话题: operator话题: array2d