JnB*_*ymn 3 c++ compiler-errors visual-c++
在我的PDBComponent类的头文件中,我刚刚为两个构造函数创建了一个新的构造函数:
class PDBComponent {
public:
PDBComponent(string name,double min_current,double nom_current,
double max_current, EPSCommands* command_ptr, double delay);
PDBComponent(string name,double min_current,double nom_current,
double max_current, EPSCommands* command_ptr, EPSFault* fault_ptr ,double delay);
...
Run Code Online (Sandbox Code Playgroud)
当我使用第一个构造函数时,我没有编译错误.像这样:
PDBComponent component = PDBComponent("STX" ,0.1, 0.5, 1.0
,new EPSCommands( 1.0, 3.0),0.0);
Run Code Online (Sandbox Code Playgroud)
但是,当我使用第二个构造函数时,我得到一个编译错误::
PDBComponent component = PDBComponent("STX" ,0.1, 0.5, 1.0
,new EPSCommands( 1.0, 3.0), new EPSFault(EPSFault::OpenCircuit,2.0),0.0);
Run Code Online (Sandbox Code Playgroud)
编译错误:
错误C2661:'fs5system :: PDBComponent :: PDBComponent':没有重载函数需要7个参数
我想也许我正在使用一个头文件,而编译器正在查看另一个头文件,所以我注释掉了第一个构造函数.编译器显示它正在重新编译PDBComponent.cpp然后显示错误:
错误C2511:'fs5system :: PDBComponent :: PDBComponent(std :: string,double,double,double,fs5system :: EPSCommands*,double)':'fs5system :: PDBComponent'中找不到重载的成员函数
...表示编译器确实在查看正确的头文件.
有谁知道为什么我看到这种行为?
我正在使用Visual Studios C++进行编译.
更多线索:
我刚刚在头文件中的类定义中添加了以下行:
bool trash() {return true;}
Run Code Online (Sandbox Code Playgroud)
并测试它
PDBComponent* component;
component = new PDBComponent("STX" ,0.1, 0.5, 1.0
,new EPSCommands( 1.0, 3.0),0.0);
cout << component->trash() << endl;
Run Code Online (Sandbox Code Playgroud)
在我的主文件中.编译时,再次编译PDBComponent标头.我收到错误消息:
错误C2039:'trash':不是'fs5system :: PDBComponent'的成员
所以,你会得到一个错误时,当你在头评论它正在编译的6参数的构造函数-但是是同一个源文件,其中包含调用到构造函数?是否有可能以某种方式将不同的头用于该编译(可能涉及预编译的头部怪异).
尝试使用/showIncludes选项("C++ |高级|显示包括"在IDE的项目设置)和/或关闭预编译的头,看看你得到任何进一步的线索或更好的性能.
| 归档时间: |
|
| 查看次数: |
4033 次 |
| 最近记录: |