如何编写类外函数的代码? C++

Posted

技术标签:

【中文标题】如何编写类外函数的代码? C++【英文标题】:How to write the code of a function outside the class? c++ 【发布时间】:2020-05-24 09:14:32 【问题描述】:

我是 C++ 新手,我正在学习类和对象。在类中,我定义了一个函数,我想将它的代码写出类。 我觉得应该是这样的:

#include <iostream>
using namespace std;

class student
    public:
        string name;
        int mark1, mark2;

        float calc_media(int, int);

        void disp()
            cout << "Student:" << name << endl;
            cout << "Media:"<< calc_media(int, int) << endl;
        


;

student::float calc_media(int x, int y)
    float media = (x + y)/2.0; 

    return media; 



int main ()
    student peter;

    cout <<"name:" ;
    cin>>peter.name;
    cout <<"mark1:" ;
    cin>>peter.mark1;
    cout <<"mark2:" ;
    cin>>peter.mark2;
    cout <<"media:" << peter.calc_media(peter.mark1, peter.mark2) << endl << endl;

    peter.disp();

    return 0;


任何人都可以帮助我,因为它不起作用。它显示了这些错误: expected primary expression before 'int' 在第 13 行,expected unqualified-id before 'float' 在第 19 行。

【问题讨论】:

【参考方案1】:
return_type class_name::member_function_name(parameters)

   //action

在你的情况下:

float student::calc_media(int x, int y)

    float media = (x + y)/2.0; 
    return media; 

在你的课堂上改变这个

  cout << "Media:"<< calc_media(int, int) << endl;

  cout << "Media:"<< calc_media(mark1, mark2) << endl;

【讨论】:

【参考方案2】:

您的示例中有两个简单的拼写错误。

cout &lt;&lt; "Media:"&lt;&lt; calc_media(int, int) &lt;&lt; endl;

您必须在此处传递两个值而不是类型。所以你可以写

cout &lt;&lt; "Media:"&lt;&lt; calc_media(2, 2) &lt;&lt; endl;

这就是编译器拒绝这个程序的原因。 除此之外,您的代码中还有另一个错字会在修复第一个错字后遇到:

student::float calc_media(int x, int y)
   float media = (x + y)/2.0; 
   return media; 

这也是笔误应该是

float student::calc_media(int x, int y)
    float media = (x + y)/2.0; 
    return media; 

【讨论】:

以上是关于如何编写类外函数的代码? C++的主要内容,如果未能解决你的问题,请参考以下文章

用 C++ 编写方法/函数的四种相同方法?

如何编写我的 C++ 函数以便我可以从 C# 调用它?

如何编写在 C++ openmp 上重用线程的代码?

如何围绕 C++ 代码编写 C 包装器以公开类方法

C++ 类 - 使用公共变量并在类外定义成员函数

爬虫——综合案例流程版