- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在命名空间 external::internal 中有模板类 BaseMyPoint
它实现了公共(public)方法 X()、Y()、Z() 和 SetCoord()。
然后写
typedef internal::BaseMyPoint MyPointd;
创建派生类MyPoint,继承MyPointd public
两个类的描述都存储在文件“myPoint.h”中:
#pragma once
#ifdef MYPOINTSDLL_EXPORTS
#define MYPOINTSDLL_API __declspec(dllexport)
#else
#define MYPOINTSDLL_API __declspec(dllimport)
#endif
namespace external {
namespace internal {
template<typename T>
struct MyPointTraits;
template<>
struct MyPointTraits<double>
{
typedef double ValueType;
static ValueType CoincidenceTolerance() { return 1e-7; }
};
template<>
struct MyPointTraits<float>
{
typedef float ValueType;
static ValueType CoincidenceTolerance() { return 1e-7f; }
};
template<typename T>
class BaseMyPoint
{
public:
T myX;
T myY;
T myZ;
typedef typename MyPointTraits<T>::ValueType ValueType;
BaseMyPoint() {}
BaseMyPoint(ValueType theX, ValueType theY, ValueType theZ) :
myX(theX), myY(theY), myZ(theZ) {}
BaseMyPoint(const BaseMyPoint& theOther) :
myX(theOther.myX), myY(theOther.myY), myZ(theOther.myZ) {}
ValueType X() const { return myX; }
ValueType& X() { return myX; }
ValueType Y() const { return myY; }
ValueType& Y() { return myY; }
ValueType Z() const { return myZ; }
ValueType& Z() { return myZ; }
void SetCoord(ValueType theX, ValueType theY, ValueType theZ)
{
X() = theX;
Y() = theY;
Z() = theZ;
}
};
}
typedef internal::BaseMyPoint<double> MyPointd;
typedef internal::BaseMyPoint<float> MyPointf;
class MyPoint : public MyPointd
{
public:
MyPoint() {}
MyPoint(const MyPointd& theOther) : MyPointd(theOther) {}
};
}
在接口(interface)文件“myPoint.i”中写入:
%module myPointsWrapper
%{
#include "myPoint.h"
using namespace external;
using namespace external::internal;
%}
%include <windows.i>
%include "myPoint.h"
在命令行我写:C:\swig -csharp -c++ -namespace pointspase -outdir C:\myPoints\myPointcs\Generated myPoint.i
在 C# 中,我们通过实例 MyPoint aPoint 引用这些方法(X()、Y()、Z()、SetCoord()):
using System;
using pointspase;
namespace myPointcs
{
class Program
{
static void Main(string[] args)
{
MyPoint aPoint = new MyPoint();
double x = 0.2, y = 0.3, z = 0.4;
aPoint.SetCoord(x, y, z);
double X = aPoint.X(), Y = aPoint.Y(), Z = aPoint.Z();
}
}
}
我有
错误 CS1061“MyPoint”不包含“Z”的定义并且没有扩展方法“Z”接受第一个可以找到“MyPoint”类型的参数(您是否缺少 using 指令或程序集引用?)
错误 CS1061“MyPoint”不包含“Y”的定义并且没有扩展方法“Y”接受第一个可以找到“MyPoint”类型的参数(您是否缺少 using 指令或程序集引用?)
错误 CS1061“MyPoint”不包含“X”的定义并且没有扩展方法“X”接受第一个可以找到“MyPoint”类型的参数(您是否缺少 using 指令或程序集引用?)
错误 CS1061“MyPoint”不包含“SetCoord”的定义并且没有扩展方法“SetCoord”可以找到接受类型为“MyPoint”的第一个参数(您是否缺少 using 指令或程序集引用?)
如何使这些方法在 C# 类 MyPoint 中可用?
提前感谢您的关注,基里尔
编辑 1
这是清楚表达我的问题的简单示例。
在“file.h”中我写
template <typename T>
class myclass {
public:
T get() const { return 0; }
};
class myintclass : public myclass<int> {};
在“file.i”中我写
%template (myclassi) myclass<int>
当我编译接口(interface)文件时出现警告:
warning 401: Base class 'myclass< int >' undefined.
warning 401: 'myclass< int >' must be defined before it is used as a base class.
因此,C# 类 myintclass 不包含方法 get()。如何更改接口(interface)文件以从类 myintclass 获取 get () 方法?
最佳答案
给定 file.h
在您的编辑中,正确声明所有内容有点棘手。理想情况下,模板应该位于与 myintclass
定义不同的单独 header 中,但这是一种经过测试的方法:
%module test
%{
#include "file.h"
%}
// Process the template first
template <typename T>
class myclass {
public:
T get() const { return 0; }
};
// Tell SWIG to generate code for a template instance.
%template(myclassi) myclass<int>;
// Now that SWIG has code for the template instance,
// SWIG can generate code for classes using the template instance.
class myintclass : public myclass<int> {};
测试模块(我为 Python 生成):
>>> import test
>>> t=test.myclassi()
>>> t.get()
0
>>> t=test.myintclass()
>>> t.get()
0
关于c# - Swig C++ 到 C# : How to wrap classes from C++ to make methods from template class available in derived class in C#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41607471/
我只想知道它们之间的区别: .class .class{ font-size:14px; } 对比: .class > .class{ font-size:14px; } 是一样的东西吗? 最佳答案
PrimeFaces 文档的以下摘录使标题中描述的两个选择器之间似乎存在差异: .ui-widget, .ui-widget .ui-widget { font-size: 90% !imp
我正在尝试选择特定值。但我遇到了一个问题。 我有两个元素,一个有 X Y,另一个有 X Y Z。 当选择 X Y Z 时,我也收到 X Y 的值...有没有办法让它寻找 X AND Y AND Z 而
.class.class 和 .class .class 有什么区别? 最佳答案 .class .class 匹配类 .class 的任何元素,这些元素是类 .class< 的另一个元素的后代/. .
我正在研究 Classname.class 和 Classname.class.toString() 并发现了一些不寻常的东西。 .class 在同一个类上运行时似乎等同于 .class。尽管 .cl
我试图在Dart中扩展列表并在此列表中使用另一个类。 这是我的示例,其中注释出了问题: import "Radio.dart"; // extends ListBase { List ra
我有一个很大的“经理”类,我认为它做得太多了,但我不确定如何将它划分为更多逻辑单元。 一般来说类主要由以下方法组成: class FooBarManager{ GetFooEntities();
我在一个文件中定义了一个抽象父类(super class),在另一个文件中定义了一个子类。我需要父类(super class)文件和堆栈跟踪报告来找到一个包含它。 但是,当它到达“extends”行时
我在 A. Alexenderscu 的现代 C++ 设计中找到了一些模板示例 作者使用以下行的地方 template class CheckingPolicy // class SmartPt
看一下这段代码: public static class A { public void doA() { } } public static class B extends A {
我有两个具有 .body 类的 div,但是,一个位于另一个具有 .box 类的 div 中 - 如下所示: 我只想为 .box 内部的 .body 设置样式...但我在下面所
我一定是遗漏了 C++ 规范中的某些内容,因为我无法解释为什么以下代码可以成功编译: class MyClass { static void fun(); }; int main() { MyClas
我正在尝试在 python 中“模拟”命名空间。我使用内部和外部类层次结构来创建我的命名空间。例如,您希望将文件(如资源)的路径保存在一个位置。我试过这样的事情: src = #path to sou
在试验 online crystal compiler 时(这太棒了),我遇到了一个我似乎无法找到解释的错误: class Person class Current < self end
在查看我的一段代码时,我陷入了如下的一条语句。 TMyObjectClass = TMyObject 类; 我有点困惑,不知道这句话是什么意思。由于 TMyObjectClass 在该语句上方没有声明
我正在编写一个简单的应用程序,以学习一些基本的Dart编程,但无法弄清楚其结构和包含的内容-我得到了一个重复的类Point 首先,我有一个叫做MouseTrack的主类。它将初始化列表并产生循环。 #
在 org.springframework.core.SerializableTypeWrapper (版本 5.2.3),第 112 行有以下代码: if (GraalDetector.in
我希望将鼠标悬停在子导航中的列表项上,以激活页面上该类别中所有项的类(不仅仅是父元素或同级元素)。有任何想法吗?这是我的意思的一个例子: img.BLUE {border:1px solid #FF
我正在通过 ClassLoader 加载类: Class clazz = urlClassLoader.loadClass(name.substring(0, name.length() - 6).r
以下简化的类在从 get() 返回值时执行不同的操作,具体取决于该类是被赋予 double 值还是数组作为模板参数: #include "array" #include "type_traits" t
我是一名优秀的程序员,十分优秀!