//グリッドからデータを取得(GUIクラスに記述) void GetData( int nField, CString& Val ) { switch( nField ) { case 1:// Val = m_Grid.GetText( ROW_1, COL_DATA ); break; case 2: Val = m_Grid.GetText( ROW_2, COL_DATA ); break; case 3: Val = m_Grid.GetText( ROW_3, COL_DATA ); break;
#include<cstdio> template <class U> U operator+(U i, U k){ return i + k + 2; } int main(){ printf("%d\n",2+2); } これでコンパイルすると"4"と表示されてしまうのですが、 演算子オーバーロードを有効にするには何が足りないのでしょうか?
なるほど。試しに以下のようなコードをにしたら演算子オーバーロードが機能しました。どうもです。 #include<cstdio> struct CLASS{}; template<class T, class U> U operator+(T t, U k){ return sizeof(t) + k; } int main(){ CLASS cls; printf("%f\n",cls+2.5); }
error: dependent-name `std::map<T, int, std::less<_Key>, std::allocator<std::pair<const T,\ int> > >::iterator' is parsed as a non-type, but instantiation yields a type note: say `typename std::map<T, int, std::less<_Key>, std::allocator<std::pair<const T, in\ t> > >::iterator' if a type is meant
891のは>887とするべきだったか もひとつ >890 ×template <class TYPE> class CStream : public IStream ○template <class TYPE> class CStream : public TYPE テンプレートを使うとなると、 実装をモジュールに封じ込めるために別のクラスが欲しくなる罠。
template <class TYPE> class CArchiveStream : public CStream<TYPE>, public CArchive<TYPE> CArchiveStream<IArchiveStream> または template <class TYPE> class CArchiveStream : TYPE CArchiveStream< CStream< CArchive<IArchiveStream> > >
1. for(list<int>::iterator it = hoge.begin(); it != hoge.end(); ++it); 2. list<int>::iterator end = hoge.end(); for(list<int>::iterator it = hoge.begin(); it != end; ++it);
話は戻るけどswitch文の一部でしか使わない、しかも複数の箇所で使う変数はどうしてるの? switch(c){ case 0: int i = 0 ;return i; case 1: int i = 1; return i; case 2: return 2; } 面倒だからいい加減なサンプルだけどこれだとコンパイルエラーになる。 iをswitchの外側で定義すると初期化できないし。 case文の所を{}で囲めばいいんだけど正直見た目が悪いような。