我正在尝试用C++实现长算术和一些相关的类。
文件树:
Home_assignment
|
| - cmake-build-debug
| |
| | - standard clion project files
|
| - CMakeLists.txt
|
| - common.h
|
| - DOUBLE.cpp
| - DOUBLE.h
|
| - Fraction.cpp
| - Fraction.h
|
| - INT.cpp
| - INT.h
|
| - main.cpp
CMakeLists.txt:
cmake_minimum_required(VERSION 3.26)
project(Home_assignment)
set(CMAKE_CXX_STANDARD 23)
add_executable(Home_assignment main.cpp
common.h
INT.h
INT.cpp
Fraction.cpp
Fraction.h
DOUBLE.cpp
DOUBLE.h
)
common.h:
#pragma once
#include <string>
#include <algorithm>
#include <iostream>
#include <vector>
#include <exception>
#include "INT.h"
#include "DOUBLE.h"
#include "Fraction.h"
分数.h:
#pragma once
#include "common.h"
INT gcd(const INT& a, const INT& b) {return b ? gcd(b, a%b) : a;}
class Fraction {
public:
friend class INT;
friend class DOUBLE;
Fraction() = default;
private:
INT den_;
INT num_;
};
所有标题都有这些行:
#pragma once
#include "common.h"
我已经完全实现了 INT 类并从 Fraction 类开始。但是编译的时候出现了错误:
C:\Users\USR\AppData\Local\Programs\CLion\bin\cmake\win\x64\bin\cmake.exe --build C:\Users\USR\CLionProjects\Home_assignment\cmake-build-debug --target Home_assignment -j 6
[0/1] Re-running CMake...
-- Configuring done (0.1s)
-- Generating done (0.0s)
-- Build files have been written to: C:/Users/USR/CLionProjects/Home_assignment/cmake-build-debug
[1/2] Building CXX object CMakeFiles/Home_assignment.dir/INT.cpp.obj
FAILED: CMakeFiles/Home_assignment.dir/INT.cpp.obj
C:\Users\USR\AppData\Local\Programs\CLion\bin\mingw\bin\g++.exe -g -std=gnu++23 -fdiagnostics-color=always -MD -MT CMakeFiles/Home_assignment.dir/INT.cpp.obj -MF CMakeFiles\Home_assignment.dir\INT.cpp.obj.d -o CMakeFiles/Home_assignment.dir/INT.cpp.obj -c C:/Users/USR/CLionProjects/Home_assignment/INT.cpp
In file included from C:/Users/USR/CLionProjects/Home_assignment/common.h:11,
from C:/Users/USR/CLionProjects/Home_assignment/INT.h:2,
from C:/Users/USR/CLionProjects/Home_assignment/INT.cpp:1:
C:/Users/USR/CLionProjects/Home_assignment/Fraction.h:4:1: error: 'INT' does not name a type
4 | INT gcd(const INT& a, const INT& b) {
| ^~~
C:/Users/USR/CLionProjects/Home_assignment/Fraction.h:15:5: error: 'INT' does not name a type
15 | INT den_;
| ^~~
C:/Users/USR/CLionProjects/Home_assignment/Fraction.h:16:5: error: 'INT' does not name a type
16 | INT num_;
| ^~~
ninja: build stopped: subcommand failed.
我尝试在网上寻找同样的问题,但没有找到任何东西。我尝试与 chatGPT 聊天,但他的所有答案都类似于“将
#include <INT>
行添加到 Fraction.h”。他的答案之一是“将 class INT;
添加到 Fraction.h” - 我尝试了此操作,但遇到了其他错误,例如:field 'den_' has incomplete type 'INT'
。我还尝试更改add_executable
中文件的顺序。
Лев, ну такое не знать((( простите