好的,这是避免歧义的最佳方法吗?
template <class T>
inline void swap(T &a, T &b)
{
T c; c = a; a = b; b = c;
}
/* blah blah blah (inside of a function:) */
for (itv = vals.begin(); itv != vals.end(); ++itv)
{
if (at < (*itv)) { swap(at, (*itv)); }
if (at % (*itv) == 0) atadd = false;
}
/* blah blah blah */
Run Code Online (Sandbox Code Playgroud)
使用交换调用也不起作用,因为它说无法解决它是否是"void swap(T&,T&)","void std :: swap(_Ty&,_ Ty&)"或......
顺便说一下,itv是一个vector <int> :: iterator.
谢谢.
我想知道如何使用运算符和'this'.举一个例子:
class grd : clm
{
inline int &operator()(int x, int y) { return g[x][y]; }
/* blah blah blah */
};
grd grd::crop(int cx1, int cy1, int cx2, int cy2)
{
grd ngrd(abs(cx1-cx2), abs(cy1-cy2));
int i, j;
//
for (i = cx1; i < cx2; i++)
{
for (j = cy1; j < cy2; j++)
{
if (i >= 0 && i < x && j >= 0 && j < y)
ngrd(i-cx1,j-cy2) = ?? // this->(i,j); ****
} …Run Code Online (Sandbox Code Playgroud) 好吧,我是操作员重载的新手,我发现了这个问题.我宁愿问你:D.而不是记录自己
关键是,我知道如何进行简单的运算符重载,但我遇到了堆栈运算符的问题.我将尝试举一个相对简单的例子:
struct dxfdat
{
int a;
string b;
/* here is the question */
}
/* use: */
dxfdat example;
example << "lalala" << 483 << "puff" << 1029 << endl;
Run Code Online (Sandbox Code Playgroud)
"lalala" << 483 << "puff" << 1029 << endl应存储在b.
dxfdat& operator<< (T a)这样的事情可以使用一个参数(example << 7),但我希望它以一种cout方式工作.
抱歉这么懒.
编辑:
真实的......好吧,它有点棘手......实际上,b不是一个字符串,而是一个其他对象的矢量,example << "lalala" << 483 << "puff" << 1029 << endl应该只创建一个对象.
这就是我正在尝试(翻译),虽然我不知道如何告诉它何时创建对象(因为它从左到右,不是吗?):
struct dxfDato
{
dxfDato(int c = 0, string v …Run Code Online (Sandbox Code Playgroud) 现在是早上5点,我有点睡着了,所以可能就是这样(我对Java也相对较新).但我不明白为什么这段代码会生成Null Exception.那时应该初始化地图,不应该吗?
private static final Map<String, Integer> CONDS_MAP =
Collections.unmodifiableMap
(
new HashMap<String, Integer>()
{{
put("null", 0);
put("false", 0);
put("true", 1);
put("numElems.lt", 2);
put("NELT", 2);
put("numElems.gt", 3);
put("NEGT", 3);
}}
);
private int getCodeInt(Object code)
{
if (code.getClass() == String.class)
{
return CONDS_MAP.get((String)code); // Null Exception here
}
else
// (... etc etc)
}
Run Code Online (Sandbox Code Playgroud)
谢谢!对不起它太琐碎了......