В заголовочном файле моего 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);
...
И когда я использую первый конструктор, я не получаю ошибку компиляции. Вот так:
PDBComponent component = PDBComponent("STX" ,0.1, 0.5, 1.0
,new EPSCommands( 1.0, 3.0),0.0);
Однако, когда я использую второй конструктор, я получаю ошибку компиляции ::
PDBComponent component = PDBComponent("STX" ,0.1, 0.5, 1.0
,new EPSCommands( 1.0, 3.0), new EPSFault(EPSFault::OpenCircuit,2.0),0.0);
Ошибка компиляции:
ошибка 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;}
И проверил это с
PDBComponent* component;
component = new PDBComponent("STX" ,0.1, 0.5, 1.0
,new EPSCommands( 1.0, 3.0),0.0);
cout << component->trash() << endl;
в моем основном файле. При компиляции заголовок PDBComponent снова компилируется. Я получаю сообщение об ошибке:
ошибка C2039: «корзина»: не является членом «fs5system :: PDBComponent»