Я не могу найти ошибку, так как синтаксис совпадает с другими унаследованными классами из того же родительского класса. Заголовочные файлы и защита заголовков есть, но по какой-то причине ошибка все еще происходит. Я убедился, что все параметры виртуальных и перегруженных конструкторов выровнены, и все остальные унаследованные классы из base.hpp также имеют одинаковый синтаксис.
//base.hpp
#ifndef __BASE_HPP__
#define __BASE_HPP__
#include <string>
class Base {
public:
/* Constructors */
Base() { };
/* Pure Virtual Functions */
virtual double evaluate() = 0;
virtual std::string stringify() = 0;
};
#endif //__BASE_HPP__
---------------------------------------------
//mult.hpp
#ifndef __MULT_HPP_H__
#define __MULT_HPP_H__
#include "base.hpp"
class Mult : public Base {
private:
double val1;
double val2;
double result;
public:
Mult(double value) : Base() { }
Mult(double, double);
double evaluate();
std::string stringify();
};
#endif
-----------------------------------------------------
//mult.cpp
#include "mult.hpp"
#include <string>
Mult::Mult(double value1, double value2) {
val1 = value1;
val2 = value2;
double result = value1 * value2;
}
double Mult::evaluate() {
return result;
}
std::string Mult::stringify() {
std::string str = std::to_string(val1) + "*" + std::to_string(val2);
return str;
}
int main(){return 0;}
-------------------------------------------------------
//mult_test.cpp
#ifndef __MULT_TEST_HPP__
#define __MULT_TEST_HPP__
#include "gtest/gtest.h"
#include "op.hpp"
#include "mult.hpp"
TEST(MultTest, MultEvaluateNonZero) {
Mult* test = new Mult(3, 4);
EXPECT_EQ(test->evaluate(), 7);
}
#endif