GAMES101 HW1 无法定义

如图

img

img

我在hpp里已经定义了rodrigues为什么在cpp中还是找不到啊

有include hpp的

img

img

img

回答部分参考、引用ChatGpt以便为您提供更准确的答案:

根据您提供的图片,问题是关于在hpp文件中定义了rodrigues,但在cpp文件中找不到的原因。这可能有几个可能的原因,我将尽量细化解释:

  1. 头文件引用问题:首先,确保您在cpp文件中正确包含了hpp文件。在cpp文件的开头,您应该使用#include "hpp文件名"的形式来引用hpp文件,确保文件路径和文件名正确无误。
  2. 命名空间问题:如果您在hpp文件中定义了rodrigues函数或变量,并且将其置于一个命名空间中,那么在cpp文件中使用rodrigues之前,您需要使用命名空间的名称来引用它。例如,如果您的hpp文件中的rodrigues位于"namespace_name"命名空间下,您应该在cpp文件中使用"namespace_name::rodrigues"来引用它。
  3. 头文件中声明和定义不一致:确保在hpp文件中对rodrigues进行了正确的声明和定义。声明是指在hpp文件中提供函数或变量的函数原型,而定义是指在hpp文件或cpp文件中提供函数或变量的具体实现。如果hpp文件中只提供了函数或变量的声明而没有提供定义,或者定义与声明不匹配,那么在cpp文件中就会找不到rodrigues。

请检查上述几个可能的原因,并逐一排除,看是否能够解决问题。如果问题仍然存在,请提供更多的上下文信息,以便我们能够更准确地帮助您。

可能原因:
1、函数未声明:在hpp文件中,需要先声明rodrigues函数,然后在cpp文件中定义该函数。如果hpp文件中没有声明rodrigues函数,则cpp文件中也无法找到该函数。
2、头文件未包含:在cpp文件中,需要包含hpp文件。如果cpp文件中没有包含hpp文件,则无法找到rodrigues函数。
例,下面是一个小小实例,hpp文件中声明了Rodrigues函数,cpp文件中定义了该函数。在main.cpp文件中,包含了hpp文件,因此可以找到Rodrigues函数。代码如下:
hpp文件(rodrigues.hpp):

#ifndef RODRIGUES_HPP  
#define RODRIGUES_HPP  
  
void Rodrigues(double, double, double, double*);  
  
#endif // RODRIGUES_HPP

cpp文件(rodrigues.cpp):

#include "rodrigues.hpp"  
#include <iostream>  
  
void Rodrigues(double a, double b, double c, double* d) {  
    *d = a + b + c;  
}

main.cpp:

#include "rodrigues.hpp"  
#include <iostream>  
  
int main() {  
    double x;  
    Rodrigues(1.0, 2.0, 3.0, &x);  
    std::cout << "Result: " << x << std::endl;  
    return 0;  
}

在hpp里已经定义了rodrigues,但是在cpp中没有包含,所以找不到,要正常使用,需要在cpp或者h中包含对rasterize.hpp的引用。