
各位朋友,用CLion写C++项目,第一张图是CMake的配置。

这是主程序,里面有个问题,如果用 #include "speechManager.h" 的写法,编译会出错,错误如下:

但是如果写 #include "speechManager.cpp" 就没问题了 是什么原因,要怎么解决?



关注让【宝码香车】来帮您解答,本回答参考DeepSeek编写,并整理提供。
如果答案让您满意,请采纳、点赞、关注,非常感谢!
.
每日一句正能量,让它带给您好心情:微小的幸福,藏在日常的缝隙里,等你发现。
.
根据问题描述和图片分析,这是一个典型的C++头文件包含和链接问题。以下是解决方案:
.h文件时出现链接错误,说明编译器找到了声明但找不到实现.cpp文件能工作是因为将实现直接包含进了主文件speechManager.cpp源文件cmake_minimum_required(VERSION 3.29)
project(基于STL的演讲比赛流程管理系统)
set(CMAKE_CXX_STANDARD 20)
add_executable(基于STL的演讲比赛流程管理系统
演讲比赛流程管理系统.cpp
speechManager.cpp
speaker.cpp # 如果有这个文件也需要添加
)
// speechManager.h
#pragma once
class SpeechManager {
public:
SpeechManager();
~SpeechManager();
void show_Menu();
void startSpeech();
void showRecord();
void clearRecord();
void exitSystem();
// 其他成员变量和方法...
};
// 演讲比赛流程管理系统.cpp
#include <iostream>
#include <windows.h>
#include <ctime>
#include "speechManager.h" // 正确的方式
int main() {
// 你的代码...
}
.cpp文件,这会导致多重定义问题.cpp文件都在CMakeLists.txt中被列出#pragma once或#ifndef保护.cpp文件中实现了所有声明的函数如果仍有问题,请检查:
speechManager.cpp文件是否存在且路径正确