由于一个奇怪的原因,我的代码无法编译
My code does not compile for a strange reason
#include <iostream>
using namespace std;
class Vehicule {
public:
void affiche() const {
cout << "Ceci est un vehicule." << endl;
}
protected:
int m_prix;
};
class Voiture : public Vehicule {
public:
void affiche() const {
cout << "Ceci est une voiture." << endl;
}
private:
int m_portes;
};
class Moto : public Vehicule {
public:
void affiche() const {
cout << "Ceci est une moto." << endl;
}
private:
double m_vitesse;
};
void presenter(Vehicule v) {
v.affiche();
}
int main() {
Vehicule v;
presenter(v);
Moto m;
presenter(m);
system("PAUSE");
return 0;
}
这段代码无法编译。你知道为什么吗?Visual Studio说m和v被使用了,但没有初始化。难道不是吗?我的意思是,我初始化它们
这段代码无法编译。我再说一遍。不编译
我得到的错误(不是警告,这是一个错误)是:
未初始化的局部变量'm'被使用使用未初始化的局部变量"v"
C4700是一个警告,而不是错误。你的代码编译得很好。它只是告诉您成员m_vitesse
, m_portes
和m_prix
未初始化。如果要初始化它们,需要为这些类提供它们自己的构造函数,例如:
class Vehicule {
public:
// This constructor initializes m_prix to 0
Vehicule() : m_prix(0) { }
void affiche() const {
cout << "Ceci est un vehicule." << endl;
}
protected:
int m_prix;
};
你的代码编译,但你得到警告。因为Vehicule
有初始化m_prix的默认构造函数。你可以通过添加构造函数来修复它。
class Vehicule {
public:
Vehicule():m_prix(0){};
void affiche() const {
cout << "Ceci est un vehicule." << endl;
}
Visual Studio抱怨,因为你没有初始化类的数据成员(m_prix
, m_portes
等)。方法affiche
必须是虚的,函数presenter
必须通过引用给出它的形参。
class Vehicule {
public:
virtual void affiche() const {
cout << "Ceci est une voiture." << endl;
}
};
void presenter(const Vehicle& v) {
v.affiche()
}
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 我的字符计数代码计算错误.为什么
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 0-1背包代码中的错误.我的代码中有什么错误
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- 在我的代码中,获得最大的Pair Wise产品C++和输出并不总是正确的
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- 为什么我的C++代码中出现'Segmentation Fault: 11'行?
- 是否值得降低我的代码的可读性,以便在出现内存不足错误时提供异常安全性?
- 为什么我的C++程序的程序集输出充满了 .ascii,没有汇编代码?
- 无法在我的堆排序代码中找到错误.无法正确执行.C++
- 如何重写全局方法名称以在调用原始方法之前将我的代码推到前面
- 为什么我的 BaseClass:Method 代码编译(带有单冒号)?
- 我的代码运行良好,但在游戏循环中中断
- 8谜题代码.我的队列没有填充,我找不到错误的位置