C++ - 使用变量指针调用函数



我试图在另一个函数中外包一些函数.cpp但是如果我在另一个.cpp中更改someObject,它必须在main.cpp中影响someObject。 所以这基本上是现在的结构。这不会影响camera.


主.cpp

someObject camera;
setCamera(someObject camera);
int main()
{
setCamera(camera);
camera.doSomething();
}

另一个.cpp

someObject tempCamera;
void setCamera(someObject camera)
{
tempCamera = camera;
}
void anotherFunction()
{
tempCamera.doSomethingElse();
}

所以我想做的是让tempCamera指向camera

但是当我这样做时:

someObject *tempCamera;
void setCamera(someObject camera)
{
tempCamera = &camera;
}
anotherFunction()
{
tempCamera.doSomethingElse();
}

我收到一个错误,即表达式必须具有class类型。 我现在的问题是:如何从指针调用函数或我有什么替代方案?

您违反了一个定义规则。您可能希望在两个文件中引用相同的someObject tempCamera;,这可以通过将除一个声明之外的所有声明标记为extern来实现。

主.cpp

someObject camera;
setCamera(someObject camera);
int main()
{
setCamera(camera);
camera.doSomething();
}

另一个.cpp

extern someObject tempCamera;
void setCamera(someObject camera)
{
tempCamera = camera;
}
void anotherFunction(){
tempCamera.doSomethingElse();
}

第三.cpp

extern someObject tempCamera;
void yetFurtherFunction(){
tempCamera.doSomethingDifferent();
}

重复此声明很快就会变得乏味,因此通常将extern声明放在多个.cpp文件中#included 的头文件中(也称为翻译单元)

最新更新