我正在学习C++中的异常处理并遇到问题.这是代码:
#include<iostream>
#include<exception>
using namespace std;
class A
{
public:
virtual void f(void){}
};
class AA:public A
{
public:
void aa(void){};
};
int main(void)
{
A a;
try
{
dynamic_cast<AA>(a).aa();
}
catch(exception ex)
{
cout<<"["<<ex.what()<<"]"<<endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以我认为try catch将允许函数执行并向我显示异常的内容,但我的编译器不会编译它.我正在使用GNU GCC的代码块.请帮助我,告诉我我需要做什么才能按照我的意图运行代码.非常感谢.
我宣布之后
enum color {red, blue, green};
Run Code Online (Sandbox Code Playgroud)
两者之间有什么区别吗?
color a=blue;
Run Code Online (Sandbox Code Playgroud)
和
enum color a=blue;
Run Code Online (Sandbox Code Playgroud) 我正在学习c ++教程并且很难理解以下代码的一部分(请参阅注释部分):
#include<iostream>
using namespace std;
class A
{
public:
A(A&src)
{
cout<<"copying A..."<<endl;
}
A(void){}
void Do(void)
{
cout<<"A is doing something"<<endl;
}
};
class B
{
public:
B(B&src)
{
cout<<"copying B..."<<endl;
}
B(void){}
void Do(void)
{
cout<<"B is doing something"<<endl;
}
};
class Compo
{
public:
Compo(Compo &src):f1(f1),f2(f2)//???
{
cout<<"Copying Compo..."<<endl;
}
Compo(void){}
A f1;
B f2;
};
int main(void)
{
Compo co1;
Compo co2=co1;
co2.f1.Do();
co2.f2.Do();
}
Run Code Online (Sandbox Code Playgroud)
那么编译器如何知道哪个f1/f2属于哪个Compo?有没有办法让它更明确?
谢谢您的帮助
我正在尝试以与racket的foldl类似的方式使用python的reduce,但是当我运行以下代码时:
functools.reduce(lambda x, y: x.append(y), [1,2,3], [])
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "<input>", line 1, in <lambda>
AttributeError: 'NoneType' object has no attribute 'append'
Run Code Online (Sandbox Code Playgroud)
您能帮忙解释一下错误并提出修复建议吗?
c++ ×3
composition ×1
constructor ×1
dynamic-cast ×1
enums ×1
exception ×1
python ×1
reduce ×1
try-catch ×1