无法在Windows窗体项目中包含文件

Can not include files in Windows Forms project

本文关键字:包含 文件 项目 窗体 Windows      更新时间:2023-10-16

我已经在Windows窗体中创建了项目Calculator。另外,我在其他cpp文件logic.cpp中有一个计算器的逻辑。

问题:我无法在Calculator.h中包含文件logic.cpp<msclrmarshal_cppstd.h>

当这个文件没有其他包含时,我也可以包含logic.cpp

这是代码:计算器.h

#pragma once
#include "E:novemberCalculatorFormCalculatorFormlogic.cpp"
#include <msclrmarshal_cppstd.h>
namespace CalculatorForm {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
...
}

逻辑.cpp

using namespace std;
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool isMultiplicationOrDevision(char c) {
    if (c == '*' || c == '/')return true;
    return false;
}
bool isSumOrSubtraction(char c) {
    if (c == '+' || c == '-')return true;
    return false;
}
double doOp(char c, double a, double b) {
    switch (c)
    {
    case '*':
        return a*b;
    case '/':
        if (!b) {
            return 0;
        }
        return a / b;
    case '+':
        return a + b;
    case '-':
        return a - b;
    default:
        return 0;
    }
}
class Expression {
private:
    vector<double> values;
    vector<char> operators;
public:
    Expression(string expr) {
        string t;
        for each  (char c in expr)
        {
            if (c == '+' || c == '-' || c == '/' || c == '*') {
                values.push_back(stod(t));
                t.clear();
                operators.push_back(c);
            }
            else {
                t += c;
            }
        }
        values.push_back(stod(t));
    }
    Expression(vector<double> values, vector<char> operators) {
        this->values = values;
        this->operators = operators;
    }
    double getResult() {
        auto i = find_if(operators.begin(), operators.end(), isMultiplicationOrDevision);
        while (i != operators.end()) {
            doOperation(i);
            i = find_if(operators.begin(), operators.end(), isMultiplicationOrDevision);
        }
        i = find_if(operators.begin(), operators.end(), isSumOrSubtraction);
        while (i != operators.end()) {
            doOperation(i);
            i = find_if(operators.begin(), operators.end(), isSumOrSubtraction);
        }
        return values[0];
    }
private:
    void doOperation(vector<char>::iterator i) {
        int index = distance(operators.begin(), i);
        double t = doOp(operators[index], values[index], values[index + 1]);
        operators.erase(i);
        values.erase(values.begin() + index);
        values[index] = t;
    }
};
string checkForBrackets(string s) {
    for (auto i = s.begin(); i < s.end(); i++) {
        string::iterator start;
        if (*i == '(') {
            int dist = distance(s.begin(), i);
            string t(i, s.end());
            t.erase(t.begin());
            string temp(s.begin(), i);
            s = temp + checkForBrackets(t);
            i = s.begin();
            advance(i, dist);
        }
        if (*i == ')') {
            i = s.erase(i);
            string t(s.begin(), i);
            Expression e(t);
            double res = e.getResult();
            s.erase(s.begin(), i);
            s = to_string(res) + s;
            return s;
        }
    }
    return s;
}
string doCalculating(string t) {
    t = checkForBrackets(t);
    Expression a(t);
    t = to_string(a.getResult());
    return t;
}

在.cpp文件中包含.h文件,并添加include保护以防止变量和函数被重新声明为

相关文章: