C++相談室 part82
■ このスレッドは過去ログ倉庫に格納されています
0129デフォルトの名無しさん
2010/06/09(水) 15:35:00メンバ関数を通してメンバの書き換えが可能だけど、呼び出し元の実体は書き換えられない、という感じです。
valueをmutable、Setをconstにしてconst Test&で受けとれば実現できますが、mutableの使用方法としてはよくないと思いますし。
class Test {
int value;
public:
void Set(int v) {
this->value = v;
}
};
void func(Test& test) {
test = Test(); //これは禁止したいけど、
test.Set(1); //これは許可したい。
}
void main() {
Test test;
func(test);
}
もう一つ。
テンプレートクラスで特定のテンプレート引数の時に呼んではいけない関数が存在するとします。
その時に関数を呼んでしまうと関数内でエラーが起きるので原因がわかりにくいのですが、何かわかりやすくする方法はありませんか?
static_ifを利用して無効な時にインスタンス化できない型を引数に取るようにして、
呼び出し元でエラーを起こすなんてことはできますけど、エラーメッセージの意味が若干変わりますよね。
■ このスレッドは過去ログ倉庫に格納されています