簡體   English   中英

參數中的c ++ forward namespace聲明

[英]c++ forward namespace declaration in parameter

我在命名空間中聲明了一個類:

namespace PixelViewer
{
  class FBO
  { ... }
}

我想在另一個類方法中使用它作為參數,如下所示:

Model.h

class ShaderProgram;
class PixelViewer::FBO;

class Model
{
 void Model::render(ShaderProgram& shaderProgram, PixelViewer::FBO& fbo)
}

Model.cxx

#include "../FBO.h"
#include "../ShaderProgram/ShaderProgram.h"

void Model::render(ShaderProgram& shaderProgram, PixelViewer::FBO& fbo)

但是,我遇到了以下錯誤:

'PixelViewer' is not a class or namespace name

'FBO' uses undefined class PixelViewer

use of undefined type 'PixelViewer'

關於我失蹤的任何想法?

謝謝

此語法無效,因為PixelViewer既可以是命名空間,也可以是類名。 所以語法是不允許的:

class PixelViewer::FBO; // disallowed

相反,只需在相應的命名空間中添加前向聲明:

namespace PixelViewer {
    class FBO;
}

是的,您必須在命名空間中執行前向聲明:

namespace PixelViewer
{
    class FBO;
}

請記住,它可能是命名空間,類或結構,因此編譯器必須知道它應該在內部使用哪一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM