我正在这个网站上上名为Udemy的C++类(class)。我刚完成关于类(class)的视频讲座。在老师的鼓励下,我决定尝试一下使用类和头文件的想法。我首先创建2个.cpp文件和1个头文件。我在第二个.cpp文件中创建了一个函数,然后在头文件中为其创建了一个类,并尝试在第一个.cpp文件中对其进行调用,但是在第一个.cpp文件中出现了错误:无效地使用了'Learn2: :Learn2'。这是第一个.cpp文件:

    #include "Learn1.h"
    #include "Learn2.cpp"

    Learn2 learn2;

    int main() {

        string input;

        cout << "Would you like to see the menu of processes? (yes/no)" << endl;

        cin >> input;

        if (input == "yes"){
            showMenu();
        }
        else{
            cout << "all done here" << endl;
        }
        return 0;
    }

    void showMenu(){
        cout << "Processes: " << flush;
        cout << " Quit(4)   Edit(5)" << endl;
        int input;

        cin >> input;

        switch(input) {
        case 4:
            cout << "You selected: quit(4)" << endl;
            break;
        case 5:
            cout << "You selected: edit(5)" << endl;
            break;
        default:
            cout << "not recognized" << endl;
            learn2.Learn2();
            }
    }

这是第二个.cpp文件:
#include "Learn1.h"

Learn2::Learn2(){
    cout << "hi" << endl;
}

这是我的头文件(.h文件):
 * Learn1.h
 *
 *  Created on: Nov 19, 2016
 *      Author: jacob
 */

#ifndef LEARN1_H_
#define LEARN1_H_

#include <iostream>
#include <limits.h>
#include <iomanip>

using namespace std;

class Learn1 {
public:
    Learn1();
    virtual ~Learn1();
};

void showMenu();

class Learn2 {
public:
    Learn2();
};

#endif /* LEARN1_H_ */

是的,我知道,代码有点随机,请记住我只是在想这个主意。

最佳答案

在名为Learn2的类中,所有名为Learn2的函数都是构造函数。它们只能用于构造对象,而不能被用作类对象的成员函数。

因此,

learn2.Learn2();

是错的。

您可以使用
learn2 = Learn2();

构造一个全新的对象,然后将其分配给learn2

如果该类还有其他成员函数,则可以在learn2.上调用它们
class Learn2 {
  public:
    Learn2();
    display() { std::cout << "In Learn2::display\n"; }
};

Learn learn2;
learn2.display();

关于c++ - (C++)得到错误:class::function的无效使用,我丝毫不知道为什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40713233/

10-10 11:36