2016-08-04 65 views
-1

说我有这个结构如何检查是否提供可选的类参数?

struct float2 { 
    float x; 
    float y; 
} 

再有就是一些构造某处

struct constructable { 
    constructable(float2 opt = float2()) { 
     if (opt == float2()) { //doesn't work 
      //fill out opt with default values 
     } 
    } 
} 

如何检查东西是否被通过选择通过呢?

+2

有两个构造函数:施工的( )和可构造的(float/* not optionale * /) –

+1

'opt == float2()'你需要像'bool operator ==(const float2&m,const float2&n){return m.x == n.x && m.y == n.y; }'让它工作。 – DimChtz

回答

1

而不是

struct constructable { 
    constructable(float2 opt = float2()) { 
     if (opt == float2()) { //doesn't work 
      //fill out opt with default values 
     } 
    } 
}; 

如果所需的默认值是在编译时已知,那么就去做

struct constructable { 
    constructable(float2 opt = {2.72, 3.14}) { 
    } 
}; 

否则使用两个构造函数:

struct constructable { 
    constructable() { 
     // Use whatever computed values 
    } 
    constructable(float2 o) { 
     // Use o 
    } 
};