c++中的错误
Error in C++
我刚刚在Python中学习了一些面向对象的编程概念,但我想将这些知识转移到c++中,并且我在使用Python时很容易的基本实现上遇到了麻烦。
#include<iostream>
using namespace std;
class Animal{
char name;
int age;
public:
Animal(char name, int age);
};
Animal::Animal(char name, int age) {
this->name = name;
this->age = age;
}
int main()
{
Animal dog ("Megg", 10);
cout << "Name: " dog.name <<endl;
return 0;
}
当我编译这段代码时,我得到了很多消息,例如:
error: no matching function for call to 'Animal::Animal(const char[5], int)'
note: Animal::Animal(char, int) <near match>
note: candidate expects 1 argument, 2 provided
谢谢!
你不需要这样做->name = name在你的构造函数定义
"Megg"是字符串字面值。你可以将"Megg"转换为const char *,但不能转换为char(这很可能导致你的错误)。
或者更好。你可以使用c++标准库的字符串类std::string
#include <iostream>
#include <string>
class Animal{
std::string name;
int age;
public:
Animal(std::string name, int age);
std::string getName() const;
int getAge() const;
};
Animal::Animal(std::string Name, int Age) {
name = Name;
age = Age;
}
std::string Animal::getName() const {
return name;
}
int Animal::getAge() const {
return age;
}
int main()
{
Animal dog ("Megg", 10);
std::cout << "Name: " << dog.getName() << std::endl; // Error in this line. Missing << between "Name: " and dog.name
return 0;
}
一些额外的编辑:
您应该避免使用using namespace std
,因为它将标准库中的所有内容(来自您包含的文件)放在全局命名空间中。您可以使用作用域解析操作符::
,如上所示。
当你开始使用多个库时,你可能会遇到两个库都有一个名为vector或string的类,或者同名的函数。避免这种情况的方法是指定要使用的名称空间。
或者你也可以这样做:
using std::cout;
using std::endl;
using std::string;
另外,为了使程序工作,你需要一种方法来访问对象的成员变量。您可以通过将变量设置为公共来实现这一点,或者更好的做法是添加访问器函数。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'