Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.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/2/visual-studio-2010/4.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++_Templates_Function_Static - Fatal编程技术网

C++ C++;,模板、静态函数

C++ C++;,模板、静态函数,c++,templates,function,static,C++,Templates,Function,Static,我的问题再次涉及到模板。。。来自非模板类A中的静态模板函数“function” A.h \ifndef A\u H #定义一个 #包括“B.h” 甲级 { 模板 静态T泛函(); }; 模板 T A::functionA() { T-var; T result=B::functionB(var);//尚未声明类B } #恩迪夫 我正在调用在非模板类B中声明和定义的静态模板函数“函数B”。在类A声明类B已经包含之前 B.h #ifndef B#H #定义B_H B类 { 模板 静态T函数b(T-

我的问题再次涉及到模板。。。来自非模板类A中的静态模板函数“function”

A.h

\ifndef A\u H
#定义一个
#包括“B.h”
甲级
{
模板
静态T泛函();
};
模板
T A::functionA()
{
T-var;
T result=B::functionB(var);//尚未声明类B
}
#恩迪夫
我正在调用在非模板类B中声明和定义的静态模板函数“函数B”。在类A声明类B已经包含之前

B.h

#ifndef B#H
#定义B_H
B类
{
模板
静态T函数b(T-var);
};
模板
tb::functionB(T变量)
{
…一些代码
}
#恩迪夫
在程序编译过程中,出现了以下错误消息:

//B类尚未申报


这不是一个真正的代码,只是一个示例。这种情况已经出现,我在程序中调用了一些静态方法。你能帮我一下吗?

发布的代码的具体问题是函数没有声明为公共函数。此外,functionA没有返回值

以下代码将正确执行

文件A.h

#ifndef A_H
#define A_H
#include "B.h"

class A
{
public:
  template <class T>
  static T functionA();
};

template <class T>
T A::functionA()
{
     T var = 4;
     T result = B::functionB(var); //Class B has not been declared
     return result;
}

#endif
#ifndef B_H
#define B_H
class B
{
public:
  template <class T>
  static T functionB(T var) ;
};

template<class T>
T B::functionB(T var)
{
  var++;
  return var;
}
#endif

犯错误问题是什么?您发布的示例应该有效。很抱歉,我在这里找不到实际的问题。问题到底是什么?另外,您的另一个问题()已关闭,因为它是重复的。添加另一个副本对任何人都没有帮助。这不再是完全的副本,因为两个类都不继承另一个。
#ifndef A_H
#define A_H
#include "B.h"

class A
{
public:
  template <class T>
  static T functionA();
};

template <class T>
T A::functionA()
{
     T var = 4;
     T result = B::functionB(var); //Class B has not been declared
     return result;
}

#endif
#ifndef B_H
#define B_H
class B
{
public:
  template <class T>
  static T functionB(T var) ;
};

template<class T>
T B::functionB(T var)
{
  var++;
  return var;
}
#endif
#include "A.h"
#include <stdio.h>

int main(void)
{
  int result = A::functionA<int>();
  printf("result: %i\n", result);
  return 0;
}
result: 5