トップページtech
63コメント17KB

C++でconstを厳密に使っている奴=神

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
const char* const kickYourAss( const string& str ) const
みたいな関数にアクセスしたくない。
0002デフォルトの名無しさんNGNG
そうだね
0003デフォルトの名無しさんNGNG
言われなくても削除依頼くらいだせ
0004デフォルトの名無しさんNGNG
今日はウンコスレが乱立するね。
今日は暑いからしょうがないね。
0005デフォルトの名無しさんNGNG
>>1
甘いよ。

const string& const kickYourAss( const string& src, const string& dst = string()) const
throw()
{
〜略〜
return dst;
}
0006デフォルトの名無しさんNGNG
重複か関連か
【C++】 const だけでメシが3杯食えちゃうスレ
http://pc5.2ch.net/test/read.cgi/tech/1078193971/l50
0007NGNG
いや、ここはクラスのメソッドを厳密にconstでもって定義している奴が自慢し、そしてオレが彼を称えるスレであって、3杯飯を食うスレではない。
0008NGNG
virtual const string& const kickYourAss( const string& src, const string& dst = string()) const = 0
純粋仮想関数の"=0"ってどういうセンス?

っていうクソスレも立てたかったんだけどね。
#define PURE =0
でいいだろとか言われて、だったら言語仕様としてなんで"pure"としなかったんだ?
という反論に、「確かにそうだ」という皆の見解一致で終わりそうだったのでやめたんだから感謝しる。
0009デフォルトの名無しさんNGNG
このスレ的にはWinMain逝ってよしだね
const int WINAPI WinMain(const HINSTRANCE hInst, const HINSTRANCE hPrevInst, const LPSTR lpszCmdLine, const int nCmdShow)
まではできるけどLPSTRをLPCSTRにはできない(windows.hの中でWinMainのプロトタイプがあるから)

なんでmain最高
const int main(const int iArgc, const char *const *const ppszArgv)
0010デフォルトの名無しさんNGNG
>>9
>LPSTRをLPCSTRにはできない

ブー、出来ます
00119NGNG
>>10
本当だ。拡張子をcからcppにしたら動いた。
00129NGNG
と思ったらただのオーバーロードじゃねーか、リンクできねーぞヽ(`Д´)ノ
0013デフォルトの名無しさんNGNG
>>12
気付くの遅すぎ。
0014デフォルトの名無しさんNGNG
windows.hをインクルードしなければ……。(フフフ
0015デフォルトの名無しさんNGNG
extern "C"つけねーとダメだぞ
00169NGNG
>>15
つけたら、オーバーロード関数群の中の 1 つだけしか "C" にできないって言われる。
そしてこれも無理。
#undef __cplusplus
#include<windows.h>
どうしてもやるんだったら、こんなこと考えてないでwinuser.hの中のプロトタイプを書き換えればいいんだろうけど。
0017デフォルトの名無しさんNGNG
LP??? っていうマクロうざくね?Win16時代の汚物だよな。
オレ死んでも使わない。ポインタは*がついてなければポインタじゃない。
こういうマクロは使うけどね。
typedef vector< hogetype* > Hogepo_vec;
0018デフォルトの名無しさんNGNG
typedefはマクロと違う
0019デフォルトの名無しさんNGNG
>>17
これで文句なし
PSTR *Hoge;
0020デフォルトの名無しさんNGNG
なぜLPFLOATがないんだぁっ
LP○○を使うのが好きなのにぃっ
0021デフォルトの名無しさんNGNG
ていうか>>6
0022デフォルトの名無しさんNGNG
ときどきLPしかないやつがあって統一できないのが鬱
0023デフォルトの名無しさんNGNG
LPSTRがchar*なのはおかしい、char=STRか?
LPSTRならchar**だ。
0024デフォルトの名無しさんNGNG
>>20
あるじゃないか。
って危うく言うところだった。俺のK2Editorでは間違えて強調表示されるようになっていたもんで。
0025デフォルトの名無しさんNGNG
>>23
16ビット時代にはサイズが16ビットのnearポインタとサイズが32ビットのfarポインタがあって、
nearポインタがただのP、farポインタがLPって区別していたんだよ。LはLongのL。
0026デフォルトの名無しさんNGNG
>>25
そんなことは聞かれてないと思うけど
0027デフォルトの名無しさんNGNG
WinMainのLPSTRはホントに書き換わる可能性があるから
LPCSTRにしたらだめだって聞いたことがあるんだが。
CreateProcessに渡す引数のほうだったかな
0028デフォルトの名無しさんNGNG
>>27
CreateProcessの方じゃないか?
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_createprocess.htm

ところでPathGetArgsはどう考えても中でキャストしているとしか思えない。
0029デフォルトの名無しさんNGNG
override
0030デフォルトの名無しさんNGNG
WinExec
とか
ShellExecute
とか種類多杉。

CreateProcess
引数多杉。

さらにセキュリティからExeからExeを起動するような時代は終わった。
0031デフォルトの名無しさんNGNG
>>30
使い分け方法
WinExec:過去の遺物。使用禁止。
ShellExecute:関連付け起動用。
CreateProcess:操り人形化したいとき。
system:Cライブラリonlyで行くとき、とりあえずやりたいとき。

ただスレ違い
http://pc5.2ch.net/test/read.cgi/tech/1089283388/l50
0032デフォルトの名無しさんNGNG
とりあえずはSEだろ
0033デフォルトの名無しさんNGNG
>>1
厳格と厳密を履き違えんなよ。
しかもコピーが返される戻り値をconst指定しても意味ないし。
0034デフォルトの名無しさんNGNG
>>33
厳格と厳密ってどう違うの?
いや、言葉の意味じゃなくてさ。
0035デフォルトの名無しさんNGNG
言葉の意味以外に何が違うってんだ?
文字が違うとか言って欲しいのか?
0036デフォルトの名無しさんNGNG
たていすかんなにらせ
0037デフォルトの名無しさん05/02/20 10:43:47
hoge
0038デフォルトの名無しさん05/02/20 10:50:07
Private Function StripTabs (ByVal MyStr)
Do While InStr(MyStr, vbTab) <> 0
MyStr = Right(MyStr, Len(MyStr) - InStr(MyStr, vbTab))
Loop
StripTabs = Trim(MyStr)
End Function

Private Function StripCmnt (ByVal MyStr)
s = 1
while s <> 0
s = InStr(MyStr,"/*")
if s <> 0 Then
e = InStr(MyStr,"*/") '見つかると仮定
MyStr = Left(MyStr,s-1) + Right(MyStr, Len(MyStr) - e - 1)
MsgBox MyStr
end if
wend
StripCmnt = MyStr
End Function



Sub unko()
TAB2 = vbTab + vbTab
ActiveDocument.Selection.SelectLine
Header = ActiveDocument.Selection
Header = StripCmnt(Header)
'Check if a there is a selection"
If InStr(Header, "") = 0 Then
exit Sub
End If
Header = StripTabs(Trim(Header))
0039デフォルトの名無しさん05/02/20 10:51:14
'Get the function return type.
Reti = InStr(Header, " ")
Loc = InStr(Header, "(")
if Reti < Loc Then
RetTp = Left(Header, Reti)
Header = Right(Header, Len(Header) - Reti)
End If

'Get the function name.
Loc = InStr(Header, "(") - 1
Loc2 = InStr(Header, ")")
if Loc > 0 And Loc2 > 0 then 'make sure there is a '(' and a ')'
fcName = Left(Header, Loc)
Header = Right(Header, Len(Header) - Len(fcName))

'Do we have storage type on the return type?
Trim (fcName)
If InStr(fcName," ") <> 0 Then
retTp = retTp + Left(fcName,InStr (fcName," "))
fcName = Right(fcName, Len(fcName) - InStr(fcName," "))
End If

'Get the function parameters.
iPrm = 0
iPrmA = 0
prms = Header

'Count the number of parameters.
Do While InStr(prms, ",") <> 0
iPrm = iPrm + 1
prms = Right(prms, Len(prms) - InStr(prms, ","))
Loop
0040デフォルトの名無しさん05/02/20 10:52:16
'Store the parameter list in the array.
If iPrm > 0 Then ' If multiple params.
iPrm = iPrm + 1
iPrmA = iPrm
Redim ParamArr(iPrm)
Do While InStr(header, ",") <> 0
ParamArr(iPrm) = Left(Header, InStr (Header, ",") - 1)
'Remove brace from first parameter.
If InStr(ParamArr(iPrm), " (") <> 0 Then
ParamArr(iPrm) = Right(ParamArr(iPrm), _
Len(ParamArr(iPrm))-InStr(ParamArr(iPrm)," ("))
Trim(ParamArr(iPrm))
End If
Header = Right(Header, Len(Header) - InStr(Header,","))
iPrm = iPrm - 1
Loop
ParamArr(iPrm) = Header
'Remove trailing brace from last parameter.
If InStr(ParamArr(iPrm), ")") <> 0 Then
ParamArr(iPrm) = Left(ParamArr(iPrm), _
InStr(ParamArr(iPrm), ")") - 1)
0041デフォルトの名無しさん05/02/20 10:53:16
InStr(ParamArr(iPrm), ")") - 1)
Trim(ParamArr(iPrm))
End If
Else 'Possibly one param.
Redim ParamArr(1)
Header = Right(Header, Len(Header) - 1) ' Strip the first brace.
Trim(Header)
ParamArr(1) = StripTabs(Header)
If InStr(ParamArr(1), ")") <> 1 Then
ParamArr(1) = Left(ParamArr(1), InStr(ParamArr(1), ")") - 1)
Trim(ParamArr(1))
iPrmA = 1
End If
End If

'set the cursor one line above the selected text.
ActiveDocument.Selection.LineUp
ActiveDocument.Selection = vbLf
Descr = Offset + "/**" + vbLf + " *" + vbTab + "@brief" + TAB2 + vbLf + " *" + vbLf
0042デフォルトの名無しさん05/02/20 10:53:53
'Print the parameter list.
Last = iPrmA
Do While iPrmA <> 0
'Remove a line feed from any of the arguments.
If InStr(ParamArr(iPrmA), vbLf) <> 0 Then
ParamArr(iPrmA) = Right(ParamArr(iPrmA), _
(Len(ParamArr(iPrmA)) - _
InStr(ParamArr(iPrmA), vbLf)))
Trim(ParamArr(iPrmA))
End If
ParamArr(iPrmA) = StripTabs(ParamArr(iPrmA))
'If there are 2+ parameters, the first parameter will
'have a '(' prepended to it, remove it here:
if iPrmA = Last AND Last <> 1 then
ParamArr(iPrmA) = Right(ParamArr(iPrmA), Len(ParamArr(iPrmA)) - 1)
End If
0043デフォルトの名無しさん05/02/20 10:55:25
idx = InStrRev( ParamArr(iPrmA), " ", -1, 1)
if 0 <> idx Then
ParamArr(iPrmA) = Mid( ParamArr(iPrmA), idx+1)
End If
Descr = Descr + " *" + vbTab + "@param" + TAB2 + ParamArr(iPrmA) + vbLf
iPrmA = iPrmA - 1
Loop

idx = InStr( RetTp, " ")
if 0 <> idx Then
RetTp = Left( RetTp, idx)
End If

RetTp = Trim(RetTp)
if RetTp <> "void" then
Descr = Descr + " *" + vbTab + "@return"+ TAB2 + RetTp + vbLf
end if
ActiveDocument.Selection = Descr + "*/"
End If
End Sub
0044デフォルトの名無しさん2005/03/25(金) 09:16:57
C++でvolatileを厳密に使っている奴=神
0045デフォルトの名無しさん2005/03/25(金) 11:02:43
throw(hoge1, hoge2) とか、きっちり指定している奴は神
0046デフォルトの名無しさん2005/03/25(金) 11:15:41
変数宣言にいちいち auto 書いている人は?
0047デフォルトの名無しさん2005/03/25(金) 11:25:38
クソ
0048デフォルトの名無しさん2005/03/26(土) 00:10:45
なんだと
0049デフォルトの名無しさん2005/03/26(土) 00:24:09
auto かいてんの?
0050デフォルトの名無しさん2005/03/26(土) 06:57:13
auroかわいいよauto
0051デフォルトの名無しさん2005/03/26(土) 08:36:13
アウト!
0052デフォルトの名無しさん2005/03/26(土) 08:36:42
アウト
0053デフォルトの名無しさん2005/03/26(土) 10:09:03
嘔吐はもれの魂。
絶対にゆずれねー。
0054デフォルトの名無しさん2005/03/27(日) 15:05:12
それなら俺はテンプレートクラスのメンバ関数すべてに inline を付ける事にしよう。
0055デフォルトの名無しさん2005/03/27(日) 15:31:52
俺はスタンフォーダー、
スタンフォード大学のフレッシュマンだ。
みんなよろしくな。
0056デフォルトの名無しさん2005/03/28(月) 00:46:42
>>54
テンプレート関数もぜひ
0057デフォルトの名無しさん2005/03/28(月) 09:26:18
なんで暗黙でその効果が得られる指定子とconstを同列に扱っているんだー!
0058デフォルトの名無しさん2005/03/28(月) 22:16:33
registerは無視?
0059デフォルトの名無しさん2005/03/28(月) 22:35:12
volatile int n;
volatile int *vp = &n;
int *p = const_cast<int *>(vp)
0060デフォルトの名無しさん2005/03/30(水) 14:24:35
const = 紺色ストッキング
0061デフォルトの名無しさん2005/07/25(月) 09:15:12
Java、C#、D、みんなconstな参照・constメンバ関数がないなんて糞だ。
0062デフォルトの名無しさん2005/07/26(火) 17:31:12
まあ確かに困るよな。なんでないんだろう?
0063デフォルトの名無しさん2005/10/02(日) 16:25:46
BOOL IS_SJIS_LEAD(char c) {
int i = 0xff & c;
if ( ((0x81 <= i) && (i <= 0x9F)) ) {
return TRUE;
}
if ( ((0xE0 <= i) && (i <= 0xEF)) ) {
return TRUE;
}
return FALSE;
}

BOOL MyReplace(CString& str) {
char *c = str.GetBuffer(str.GetLength());
char *p = c;

while (*p) {
if (!IS_SJIS_LEAD(*p)) {
p++;
continue;
}

if ( (0xff & *p) == 0x81 && (0xff & *(p+1)) == 0x40) {
*p = 0x20;
*(p+1) = 0x20;
}

p += 2;
}

return TRUE;
}
■ このスレッドは過去ログ倉庫に格納されています