我正在尝试编写一个使用autotools构建的程序,但是当我尝试制作它时遇到了问题.Automake似乎依赖于一个名为depcomp的文件.我想知道这个文件做了什么,以及我应该填写什么/我应该怎么做.
我有数据类型:
data Posn a = Posn Int Int a
Run Code Online (Sandbox Code Playgroud)
我想为它创建一个自定义的Show实例,它将两个Int显示为有序对,如下所示:
showPosn :: Show a => Posn a -> String
showPosn (Posn l c x) = show (l,c) ++ (' ' : show x)
Run Code Online (Sandbox Code Playgroud)
我试过这个:
instance Show (Show a => Posn a) where
show = showPosn
Run Code Online (Sandbox Code Playgroud)
但这给了我错误"非法实例声明".
令人沮丧的是,deriving Show工作得很好.所以,我的问题是:我需要做什么才能获得我的Show实例?
我想知道有一个方法返回一个r值.具体来说,我想知道是否有办法用重载运算符来做到这一点.我有这个代码:
struct vec4 {
float x;
float y;
float z;
float w;
...
inline float operator [] (int i)
{
switch (i) {
case 0:
return this->x;
case 1:
return this->y;
case 2:
return this->z;
case 3:
return this->w;
default:
exit(1);
return 0;
}
}
};
Run Code Online (Sandbox Code Playgroud)
我怎样才能改变这一点,以便我可以使用某些东西来达到效果
vec4 v;
...
v[2] = 5.0f;
Run Code Online (Sandbox Code Playgroud)
我听说过C++ 11中的rvalue引用,它们可能是一个潜在的解决方案吗?
编辑:我找到了一种方法来输入我的实际代码.