C ++定义类编译错误的函数(Visual Studio)

Posted

技术标签:

【中文标题】C ++定义类编译错误的函数(Visual Studio)【英文标题】:C++ Defining functions of a class compile error (Visual Studio) 【发布时间】:2016-11-17 02:24:00 【问题描述】:

我刚刚开始分配并开始在“Distance.h”选项卡中定义类的函数,虽然我很确定我的函数已正确初始化,但我仍然收到编译器错误说“定义不是成立。”我使用了一位在线导师,他在他的电脑上运行它并没有出现任何错误,尽管他没有进一步帮助我解决这个问题。有谁知道在这种情况下我应该做什么,因为这是我唯一的计算机,或者是否有人可以告诉我我是否真的只是编码错误。

这是我的“Distance.h”:

#pragma once

class Distance

    private:
        long length;

    public:
        // Transformers
        void setLength(long newLength);
        void setFeet(int newFeet);

        // Observors
        long getLength();
        int getFeet();
        int getInches();
        double getLengthInFeet();
;

【问题讨论】:

你也有Distance.cpp吗? 您已经提供了函数的声明。编译器抱怨的是它找不到定义。声明是函数的“签名”。定义是函数的代码。 到目前为止我的 distance.cpp 只是:#include "Distance.h" 我的 source.cpp 是:#include using namespace std; #include "Distance.h" main() // TODO: Define 1 Distance object: dist1 Distance dist1; // TODO: 调用 setLength 成员函数在 dist1 中存储一个 // 长度 setLength.dist1(); 【参考方案1】:

你必须定义你的类方法。例如:

#pragma once

class Distance

  private:
    long length;

  public:

    //Transformers
    void setLength(long newLength)
    // TODO: define your method here
    // For instance: length = newLength;
    
    void setFeet(int newFeet)
    // TODO: define your method here
    

    //Observors
    long getLength()
    // TODO: define your method here
    
    int getFeet()
    // TODO: define your method here
    
    int getInches()
    // TODO: define your method here
    
    double getLengthInFeet()
    // TODO: define your method here
    
;

【讨论】:

补充:既然你提到你确实有一个Distance.cpp,你应该在那里写你的方法定义。

以上是关于C ++定义类编译错误的函数(Visual Studio)的主要内容,如果未能解决你的问题,请参考以下文章

编译错误 未定义的引用 怎么回事

当您收到类声明的编译错误“看起来像函数定义”时,这意味着啥?

C/C++ union 中的问题

C ++错误C2600:无法定义编译器生成的特殊成员函数(必须首先在类中声明)[重复]

关于一个多个.cpp文件的项目中,函数出现未定义引用错误

C语言宏定义