我已尽可能简化程序。这里是:

helloworld.hpp

#ifndef HELLOWORLD_HPP
#define HELLOWORLD_HPP

class testWorld {
    public:
        testWorld() {}
        ~testWorld() {}
        void initPhysics();
};
#endif

你好
#include "helloworld.hpp"
#include <iostream>

using namespace std;

void testWorld::initPhysics() {
    cout << "Initiating physics..." << endl;
}

int main(int argc,char** argv) {
    cout << "Hello World!" << endl;
    testWorld* world;
    world = new testWorld();
    world<-initPhysics();
    return 0;
}

我用命令编译
g++ -c hello.cpp

并得到错误
hello.cpp: In function ‘int main(int, char**)’:
hello.cpp:14:21: error: ‘initPhysics’ was not declared in this scope

即使我包括helloworld.hpp,编译器为何仍看不到initPhysics的声明?

最佳答案

应该是world->initPhysics(),而不是world<-initPhysics()
您的版本被读取为表达式“世界小于-1乘以全局函数initPhysics()的结果”,这是它找不到的全局函数。

尽管这显然是测试代码,但我想指出的是,如果使用new分配对象,则必须在某处显式delete

10-08 08:13