从类中的另一个文件请求函数不起作用
Requesting a function from another file in a class not working
我有 2 个.cpp文件,名为"FactoringProgram.cpp"和"FactoringProgram2nd.cpp",还有 1 个名为"FactoringProgram.h"的头文件。我已经尝试在StackOverflow和其他几个站点上搜索此问题,但尚未找到适合我的解决方案。当我尝试运行以下命令:"g ++ FactoringProgram.cpp FactoringProgram2nd.cpp"时,我收到此错误:
FactoringProgram.cpp:在函数 'int main((' 中: FactoringProgram.cpp:8:11: error: request for member 'InitialMessage' 在"问题 1"中,它是非类类型"因子分解((">
问题 1.初始消息((;
"FactoringProgram.h"的代码是:
#ifndef FactoringProgram_h
#define FactoringProgram_h
#include <stdio.h>
#include <iostream>
class Factoring
{
private:
int m_FirstCoefficent;
char m_FirstOperator;
int m_SecondCoefficent;
char m_SecondOperator;
int m_3rdExpression;
public:
Factoring();
int InitialMessage();
};
#endif
保理程序.cpp代码:
#include <stdio.h>
#include <iostream>
#include "FactoringProgramH.h"
int main()
{
Factoring Problem1();
Problem1.InitialMessage();
return 0;
}
因子分解程序2nd.cpp代码:
#include "FactoringProgramH.h"
#include <stdio.h>
#include <iostream>
Factoring::Factoring(int FirstCoefficent=0, char FirstOperator='+',
int SecondCoefficent=1, char SecondOperator='+', int 3rdExpression=1)
: m_FirstCoefficent(FirstCoefficen), m_FirstOperator(FirstOperator),
m_SecondCoefficent(SecondCoefficent), m_SecondOperator(SecondOperator),
m_3rdExpression(3rdExpression);
{
}
int Factoring::InitialMessage()
{
std::cout << "Ok right now your expression is looking like: "
<< FirstCoefficent << "x^2 " << FirstOperator << " " << SecondCoefficent
<< " x" << SecondOperator << " " << 3rdExpression;
}
您的代码有几个小错误。这是一个有效的版本(您可以比较并查看我必须更改的内容(。更改摘要如下:
- 默认参数值应位于头文件 (*.h( 中;
- 不能以数字开头的变量/参数名称;
int InitialMessage()
不返回任何内容,所以我将其更改为void InitialMessage()
;- 初始化构造函数中的字段时,最后一个字段不能以分号结尾;
- 修复了
main.cpp
中最烦人的解析(每@RSahu条评论(。
保理程序.h
#ifndef FactoringProgram_h
#define FactoringProgram_h
#include <stdio.h>
#include <iostream>
class Factoring
{
private:
int m_FirstCoefficent;
char m_FirstOperator;
int m_SecondCoefficent;
char m_SecondOperator;
int m_3rdExpression;
public:
Factoring(int FirstCoefficent = 0, char FirstOperator = '+',
int SecondCoefficent = 1, char SecondOperator = '+', int thirdExpression = 1);
void InitialMessage();
};
#endif
保理计划.cpp
#include "FactoringProgram.h"
Factoring::Factoring(int firstCoefficent, char firstOperator, int SecondCoefficent, char SecondOperator, int thirdExpression) :
m_FirstCoefficent(firstCoefficent),
m_FirstOperator(firstOperator),
m_SecondCoefficent(SecondCoefficent),
m_SecondOperator(SecondOperator),
m_3rdExpression(thirdExpression)
{}
void Factoring::InitialMessage()
{
std::cout << "Ok right now your expression is looking like: "
<< m_FirstCoefficent << "x^2 " << m_FirstOperator << " " << m_SecondCoefficent
<< " x" << m_SecondOperator << " " << m_3rdExpression;
}
主.cpp
#include <stdio.h>
#include <iostream>
#include "FactoringProgram.h"
int main()
{
Factoring Problem1;
Problem1.InitialMessage();
return 0;
}
对于此错误,请替换:
Factoring Problem1();
由:
Factoring Problem1 = Factoring();
问题是编译器将此行解释为函数声明而不是变量声明。正如评论中提到的,这被称为最烦人的解析器问题。
Obs:您发布的代码包含更多小错误。
你应该定义没有参数的Factoring()
,我在FactoringProgram.h中使用了标题
保理程序.h
#include <stdio.h>
#include <iostream>
class Factoring
{
private:
int m_FirstCoefficent;
char m_FirstOperator;
int m_SecondCoefficent;
char m_SecondOperator;
int m_3rdExpression;
public:
Factoring();
Factoring(int,char,int,char,int);
int InitialMessage();
};
#endif
保理程序.cpp
#include "FactoringProgram.h"
int main()
{
Factoring Problem1 = Factoring();
Problem1.InitialMessage();
system("pause");
return 0;
}
保理计划第二.cpp
#include "FactoringProgram.h"
Factoring::Factoring()
{
*this = Factoring(0, '+', 1, '+', 1);
}
Factoring::Factoring(int FirstCoefficent = 0, char FirstOperator = '+',int SecondCoefficent = 1, char SecondOperator = '+', int _3rdExpression = 1) : m_FirstCoefficent(FirstCoefficent), m_FirstOperator(FirstOperator),m_SecondCoefficent(SecondCoefficent), m_SecondOperator(SecondOperator),m_3rdExpression(_3rdExpression)
{
}
int Factoring::InitialMessage()
{
std::cout << "Ok right now your expression is looking like: "
<< m_FirstCoefficent << "x^2 " << m_FirstOperator << " " << m_SecondCoefficent
<< " x" << m_SecondOperator << " " << m_3rdExpression;
return 0;
}
相关文章:
- "error: no matching function for call to"构造函数错误
- 构造函数请求错误的参数数
- 从类中的另一个文件请求函数不起作用
- 如何在函数内部使用 zmq(以非阻塞方式)在客户端请求时获取函数的状态?
- 如何使用两个发送函数发送 GET 请求
- 通过构造函数请求数组来初始化子类
- cURL GET请求函数未返回字符串
- 是否有为std::set请求容量的函数
- 是指向在向函数返回值/参数和类请求传输数据期间复制的内存的指针
- 如何在一个函数中发送两个请求
- 请求返回类型的构造函数
- 使用 C++ 的代码块 我正在尝试从我的类中打印出一个访问器函数。 错误指出请求成员get_address
- QNetworkAccessManager 析构函数是否中止当前请求
- 为什么UuidFromString函数请求指向无符号字符的非常数指针
- 将整数传递给请求引用的函数
- 是否可以将char[][]传递给请求char**的函数
- 这个函数请求用户通过循环输入文件名的错误在哪里?
- 错误:函数"int main()"中请求从 'double' 型转换为非标量类型'Player';
- 当请求变量时,C++调用函数
- 请求成员函数时出现c++错误