c++ 在函数中使用函数
c++ using functions within functions
我是 c++ 的新手,但我正在处理一个项目,处理对集合进行不同的操作,如果集合是有限的,其中一个只是打印出来。 SoS 是正在使用的对象,它仅代表一组字符串,并且具有一个字符串向量和一个布尔值作为其数据成员。我创建了一个函数来检查集合是否是有限的,我试图在我的打印函数中调用它,但我一直收到错误提示 "no member named "isFinite。”这就是我所拥有的,非常感谢任何帮助。
void SoS::print() const{
if (m_vos.isFinite() == true){
for (int i = 0; i < m_vos.size(); i++){
cout << m_vos[i]<< endl;
}
}
else{
cout << "COMPLEMENT OF:"<< endl;
for (int i = 0; i< m_vos.size(); i++){
cout << m_vos[i]<< endl;
}
}
}
bool SoS::isFinite() const{
if (isfinite(m_vos.size()){
return true;
}
return false;
}
C++ 与 C 一样,由于其单遍编译器设计的性质,需要前向声明。在 C++ 中,这通常不是问题,因为 class 在 .cpp 文件之前的头文件中已完全声明,但该错误消息表明您尚未充实 class 声明。
它应该是这样的(根据你的描述):
class SoS {
private:
vector<string> m_vos;
bool someBool;
public:
void print() const;
bool isFinite() const;
}
问题是您正试图在 std::vector<std::string>
(m_vos
) 上调用 SoS::isFinite()
。 std::vector
没有这样的成员。您只能在 SoS
类型的对象上或在 SoS
函数内调用 SoS::isFinite()
。
幸运的是,您在 SoS
函数中,因此您只需将代码更改为:
void SoS::print() const{
// Calls SoS::isFinite()
if (isFinite() == true){
我是 c++ 的新手,但我正在处理一个项目,处理对集合进行不同的操作,如果集合是有限的,其中一个只是打印出来。 SoS 是正在使用的对象,它仅代表一组字符串,并且具有一个字符串向量和一个布尔值作为其数据成员。我创建了一个函数来检查集合是否是有限的,我试图在我的打印函数中调用它,但我一直收到错误提示 "no member named "isFinite。”这就是我所拥有的,非常感谢任何帮助。
void SoS::print() const{
if (m_vos.isFinite() == true){
for (int i = 0; i < m_vos.size(); i++){
cout << m_vos[i]<< endl;
}
}
else{
cout << "COMPLEMENT OF:"<< endl;
for (int i = 0; i< m_vos.size(); i++){
cout << m_vos[i]<< endl;
}
}
}
bool SoS::isFinite() const{
if (isfinite(m_vos.size()){
return true;
}
return false;
}
C++ 与 C 一样,由于其单遍编译器设计的性质,需要前向声明。在 C++ 中,这通常不是问题,因为 class 在 .cpp 文件之前的头文件中已完全声明,但该错误消息表明您尚未充实 class 声明。
它应该是这样的(根据你的描述):
class SoS {
private:
vector<string> m_vos;
bool someBool;
public:
void print() const;
bool isFinite() const;
}
问题是您正试图在 std::vector<std::string>
(m_vos
) 上调用 SoS::isFinite()
。 std::vector
没有这样的成员。您只能在 SoS
类型的对象上或在 SoS
函数内调用 SoS::isFinite()
。
幸运的是,您在 SoS
函数中,因此您只需将代码更改为:
void SoS::print() const{
// Calls SoS::isFinite()
if (isFinite() == true){