[英]Calling function in C++ without creating an object
我已经读过类似的问题,但是提供的解决方案对我来说并不起作用。
我想调用一个位于另一个.cpp文件中的另一个类中的函数。 我不想创建该对象的实例,我只想使用该函数。
我的代码尝试调用该函数:
switch (option)
{
case 1:
cout << "\nDoing stuff\n\n" ;
Controller::AlbumOps SayHey();
//SayHey should have run but isn't working
break;
我试图调用的函数:
#include "Menu.hpp"
#include "Album.hpp"
#include "stdio.h"
#include "AlbumOps.hpp"
#include <iostream>
using namespace std;
namespace Controller
{
static void Controller::AlbumOps::SayHey ()
{
cout << "Hey\n";
}
}
当我执行代码时,永远不会打印Hey。 我认为解决方案是使函数静态化,但这对我没有用。
电话应该是
Controller::AlbumOps::SayHey(); // ^^ // double-colon
您应该在类内函数声明上放置static
变量 ,而不是在类外函数定义上放置static
变量(在类外函数定义中,这意味着完全不同的“内部链接”)。 那是:
在标题( AlbumOps.hpp )中:
// ... namespace Controller { class AlbumOps { public: // ... static void SayHey(); // Note: 'static' here }; } // ...
并在实现文件( AlbumOps.cpp )中:
// ... void Controller::AlbumOps::SayHey() // Note: no 'static' { cout << "Hey\\n"; } // ...
要么:
// ... namespace Controller { // ... void AlbumOps::SayHey() // Note: no 'static', no repeated 'Controller::' { cout << "Hey\\n"; } // ... } // ...
(记录下来,您当前
Controller::AlbumOps SayHey();
// ^
// space
所做的是在本地声明一个名为SayHey
的函数,该函数SayHey
带任何参数并返回Controller::AlbumOps
(搜索“ C ++最令人烦恼的分析”)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.