小编mat*_*thk的帖子

使用iostream进行C++编译错误

我正在使用fstream并遇到一些错误.

这是我有的:

class CLog
{
    void printOn(std::ostream& dbg) const;
}

void operator>>(const CLog& s, std::ofstream& dbg)
{
    s.printOn(dbg);
}
Run Code Online (Sandbox Code Playgroud)

但是当我编译时,我收到以下错误:

error C2664: 'printOn' : cannot convert parameter 1 from 
'class std::basic_ofstream<char,struct std::char_traits<char> >' to 
'class std::basic_ostream<char,struct std::char_traits<char>  > &' 
A reference that is not to 'const' cannot be bound to a non-lvalue
Run Code Online (Sandbox Code Playgroud)

我认为ofstream继承自ostream所以为什么不可能呢?

谢谢

c++ inheritance iostream

1
推荐指数
1
解决办法
403
查看次数

带有Int类型的Haskell zip列表

我在Haskell中遇到以下问题.

我尝试压缩列表和数字以编号列表即zip [1..] mylist.

但是,这种类型是[(Integer, [String])].

有没有办法得到Int而不是Integer在这种情况下?

haskell

1
推荐指数
1
解决办法
259
查看次数

c ++ dtor释放_bstr_t内存

一个简单的问题,但我不确定它在C++中做了什么.

当我有一个具有_bstr_t成员的类.我想知道删除对象时是否释放成员:

class A {
    _bstr_t foo("Testing");
}
Run Code Online (Sandbox Code Playgroud)

A堂课没有dtor.那个默认的dtor是否会调用该类成员的dtor A

特别是对于_bstr_t,因为它通过SysAllocString分配一个字符串.

谢谢

c++ bstr

0
推荐指数
1
解决办法
1098
查看次数

使用覆盖C#重载

我可以自己回答这个问题,写一个虚拟测试,但我想知道人们对这个问题的看法.这里是:

当我们同时重载和覆盖时,将调用哪种方法?我只考虑类型重载而不是arity重载和类型重载是相关的.

让我举个例子:

class AA {}
class BB : AA {}

class A {
    public virtual void methodA(AA anAA) { Console.Write("A:methodA(AA) called"); }
    public virtual void methodA(BB aBB) { Console.Write("A:methodA(BB) called"); }
}

class B : A {
    public override void methodA(AA anAA) { Console.Write("B:methodA(AA) called"); }
}

new B().methodA(new BB());     // Case 1
new B().methodA(new AA());     // Case 2
new B().methodA((AA)new BB()); // Case 3
Run Code Online (Sandbox Code Playgroud)

你能说出案例1,2和3会发生什么吗?

我个人认为过载是邪恶的,并且没有一致的想法可以导致可预测的答案.这完全基于编译器+ vm中实现的约定.

编辑:如果您对过载是邪恶的原因有疑问,可以阅读Gilad Brach的博客文章

谢谢

c# overriding overloading

0
推荐指数
1
解决办法
522
查看次数

标签 统计

c++ ×2

bstr ×1

c# ×1

haskell ×1

inheritance ×1

iostream ×1

overloading ×1

overriding ×1