0

我正在尝试为 Cinder 的 C++ 中的 Trigonometry 实用程序编写一个基本的静态类。

这是我的主文件:

#include "cinder/app/App.h"
#include "cinder/app/RendererGl.h"
#include "cinder/gl/gl.h"

//#include "MyStaticClass.h" //this simple include doesn't work...
#include "C:\Users\ALEX\Cinder Projects\LearnLinkage\vc2013\MyStaticClass.h"// so I have to use this stupid absolut path...

using namespace ci;
using namespace ci::app;
using namespace std;

class LearnLinkageApp : public App {
  public:
    void mouseDown( MouseEvent event ) override;
};

void LearnLinkageApp::mouseDown( MouseEvent event )
{
    MyStaticClass::MyStaticFunction();
}


CINDER_APP( LearnLinkageApp, RendererGl )

这是我的静态类文件:

MyStaticClass.h

#pragma once
static class MyStaticClass
{
public:
    MyStaticClass();
    ~MyStaticClass();
    static void MyStaticFunction();
};

我的静态类.cpp

#include "MyStaticClass.h"


MyStaticClass::MyStaticClass()
{
}


MyStaticClass::~MyStaticClass()
{
}

static void MyStaticFunction(){

}

我收到此消息错误:错误 4 错误 LNK2019:无法解析的外部符号“public: static void __cdecl MyStaticClass::MyStaticFunction(void)”(?MyStaticFunction@MyStaticClass@@SAXXZ) 在函数“public: virtual void __thiscall LearnLinkageApp: :mouseDown(class cinder::app::MouseEvent)" (?mouseDown@LearnLinkageApp@@UAEXVMouseEvent@app@cinder@@@Z) C:\Users\ALEX\Cinder Projects\LearnLinkage\vc2013\LearnLinkageApp.obj LearnLinkage

我对这个https://en.wikipedia.org/wiki/Translation_unit_%28programming%29 和这个 https://en.wikipedia.org/wiki/One_Definition_Rule做了一些研究

问题似乎是一个静态函数得到未解析的外部符号,你能告诉我更多关于这个吗?理论上可以在cpp的虚函数中调用静态函数吗?

谢谢你的支持

4

0 回答 0