C++ error LNK2005, fatal error LNK1169等重定义问题彻底解决的几种方案

背景

最近在写一套计算程序,主要用于进行专业上的一些仿真。期间需要自定义一些常用的数学函数,比如最常用的各种维度的线性插值、矩阵运算等。一种方法是统一定义一个数学库,将所有类型的函数全放进去,但这会导致该文件越来越大,且不便于分类管理。为此为打算为每类数学函数单独写一个类,以插值类为例,类里边包含从1维到4维的各插值函数等。

问题

但这样在其他类使用插值类时,就涉及到了一个调用的问题。可以在每一个需要调用插值类的类内部,如气动类中设置一个插值类的成员变量,但感觉这样会造成存储空间的浪费,因此想考虑使用类似Python那种引入一个通用的对象的形式。最开始是非常天真的直接在插值类声明后定义

//interp.h
#include"stdafx.h"

class interp
{
   ....
}itp;    

然后在其他使用插值类的类中直接调用itp使用其成员函数,由于使用插值类的使用者很多,如气动类质量类等,在编译后会出现类似下面的错误

期初以为这是由于头文件重复包含导致的,但由于已经添加了#pragma once等处理,因此觉得莫名其妙。所以又专门学习了一下C++的内存模型,变量的存储持续性、链接性和作用域的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值