在此代码中
template<typename ValueT, typename ErrorT = bool>
class ValueOrError
{
private:
enum class State
{
Undefined, OK, EndOfFile, InError
};
public:
........
template<typename U>
static ValueOrError
copyProblem(const ValueOrError<U, ErrorT>& other)
{
ValueOrError result;
result.error_ = other.error_;
result.state_ = other.state_;
// result.state_ = static_cast<State>(other.state_);
return result;
}
private:
template<typename U, typename E>
friend class ValueOrError;
State state_;
ValueT value_;
ErrorT error_;
};
g ++ 4.8.3在状态分配时给出错误。它抱怨
无法分配类型ValueError<U>::State
的值
对于不同的U和T,为ValueError<T>::State
类型的值
静态演员绕过这个。有没有更好的方法
做这个?状态类型显然不随模板而变化
参数。
答案 0 :(得分:2)
这是一种方式:
struct State
{
enum Enum{ Undefined, OK, EndOfFile, InError };
};
template< class ValueT, class ErrorT = bool>
class ValueOrError
: private State
{
public: