我试图在另一个函数中外包一些函数.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文件中#include
d 的头文件中(也称为翻译单元)