Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;-用变量指针调用函数_C++_Function_Pointers - Fatal编程技术网

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

C++ C++;-用变量指针调用函数,c++,function,pointers,C++,Function,Pointers,我试图在另一个.cpp中外包一些功能,但如果我在另一个.cpp中更改someObject,则必须在main.cpp中影响someObject。 这就是现在的结构。这不会影响相机 main.cpp someObject camera; setCamera(someObject camera); int main() { setCamera(camera); camera.doSomething(); } someObject tempCamera; void setCame

我试图在另一个.cpp中外包一些功能,但如果我在另一个.cpp中更改
someObject
,则必须在main.cpp中影响
someObject
。 这就是现在的结构。这不会影响
相机


main.cpp

someObject camera;
setCamera(someObject camera);

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

void setCamera(someObject camera)
{
    tempCamera = camera;
}

void anotherFunction()
{
    tempCamera.doSomethingElse();
}

另一个.cpp

someObject camera;
setCamera(someObject camera);

int main()
{
    setCamera(camera);
    camera.doSomething();
}
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();
}
我得到一个错误,表达式必须具有
类型。
我现在的问题是:如何从指针调用函数,或者我有什么选择

您正在与客户发生冲突。您可能希望引用相同的
someObject tempCamera都可以通过将除一个声明外的所有声明标记为
extern
来实现

main.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
声明放在头文件中,即
#将
d包含在多个.cpp文件中(也称为翻译单位)

啊,当然可以。谢谢你的帮助。我的头脑完全陷入了复杂的模式,忽略了简单的事情。