繁体   English   中英

在C ++中调用函数而不创建对象

[英]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。 我认为解决方案是使函数静态化,但这对我没有用。

  1. 电话应该是

      Controller::AlbumOps::SayHey(); // ^^ // double-colon 
  2. 您应该在类内函数声明上放置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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM