Сценарий: Структура с вызовом метода и свойства другого объекта

Этот коммит содержится в:
Softonik 2024-01-26 03:28:42 +03:00 коммит произвёл Nobody
родитель 74a6ab6231
коммит 56fe611154
2 изменённых файлов: 42 добавлений и 2 удалений

Просмотреть файл

@ -87,8 +87,13 @@ func handleSelectorExpr(expr ast.Expr) string {
code := ""
switch x := s.X.(type) {
case *ast.Ident:
if isInMethod && x.Name == currentReceiverName {
code += "this->"
if isInMethod {
if x.Name == currentReceiverName {
code += "this"
} else {
code += handleIdentExpr(x)
}
code += "->"
} else {
code += handleIdentExpr(x)
code += "."

Просмотреть файл

@ -161,3 +161,38 @@ this->x=1;
this->x=this->y;
}
```
Сценарий: Структура с вызовом метода и свойства другого объекта
* Исходник:
```
package test
type device struct {
x int
}
func (d *device) doSomething() {
dev2.doSomethingElse()
}
func (d *device) doSomethingElse() {
dev2.x = 1
d.x = dev2.x
}
```
* Результат:
```
class device {
public:
int x;
void doSomething();
void doSomethingElse();
};
void device::doSomething() {
dev2->doSomethingElse();
}
void device::doSomethingElse() {
dev2->x=1;
this->x=dev2->x;
}
```